【发布时间】:2018-09-19 22:03:25
【问题描述】:
我想获取所有包含“_AT_”或“PV_”的项目,
但是d.Nom.Contains($"PV_") 和d.Nom.Contains($"_AT_") 也获取仅包含“AT”和“PV”的项目
IQueryable<DocumentMetadata> docPV = NHibernateSession.Current.Query<DocumentMetadata>()
.Where(d => d.IdEntiteRattachement == missionId
&& d.Nom.Contains($"PV_")
&& d.Desactive == false)
.OrderByDescending(d => d.DateDerniereModif);
IList<DocumentMetadata> docAR = NHibernateSession.Current.Query<DocumentMetadata>()
.Where(d => d.IdEntiteRattachement == missionId
&& d.Nom.Contains($"_AT_")
&& d.Desactive == false)
.OrderByDescending(d => d.DateDerniereModif).ToList();
【问题讨论】:
-
&& (d.Nom.Contains($"PV_") || d.Nom.Contains($"_AT_"))? -
您是在问如何结合这些条件?如
&& (d.Nom.Contains($"PV_") || d.Nom.Contains($"_AT_")) -
在 SQL 中,下划线(和百分比)是通配符。你必须逃离他们。您很可能会在文档中找到它。
-
是不是因为下划线充当了通配符?这有帮助吗 - stackoverflow.com/questions/5821/…? (即 d.Nom.Contains(@"PV_") - 注意你需要 '@' 因为 \ 本身就是一个转义字符。
-
不要因为不清楚而关闭这个问题。恕我直言,这是一个明确的问题:过滤
Contains("_AT_")也会找到仅包含"AT"的字符串。 (但它可能是重复的。)
标签: c# string nhibernate contains linq-to-nhibernate