【发布时间】:2016-08-09 22:09:27
【问题描述】:
我使用以下 Linq 查询:
var projectList = from p in dbContext.vw_Projektkontrolle
where p.TXT_Adress1.Contains(filterTxt)
orderby p.TXT_Name
select p;
我的projectList 始终为空。 在调试中我可以看到,filterTxt 是例如“testcompany”。
在 EF 6 中是否仍在使用 Contains 方法或有任何工作 周围?
我通过 Form Post 将 filterTxt 传递给我的 MVC 应用程序中的 Action 方法。
如何解决这个问题。
编辑:当我只使用一个
charf.ex: "a" asfilterTxt时它可以工作。但是
TXT_Adress1和filterTxt都被声明为字符串
【问题讨论】:
-
这里包含的是String方法,与实体框架无关。确保 dbContext.vw_Projektkontrolle 包含 TXT_Adress1 包含过滤器文本的元素。
-
你试过使用 Lambda 表达式吗?类似
var projectList = dbContext.vw_Projektkontrolle.Where(x => x.TXT_Adress1.Contains(filterTxt)).OrderBy(o => o.TXT_Name).ToList(); -
我试过 Lambda,结果是一样的。没有。我绝对确定 TXT_Adress1 中包含 filterTxt,所以我想知道为什么它不会将过滤器附加到字符串中。 @SelvaTS
-
您检查过 EF 中形成的查询是什么吗?
-
这里有很多令人困惑的 cmets。人们,LINQ(也适用于流畅的语法)将由实体框架转换为 SQL。 .NET 的
string.Contains()不会被调用。此外,区分大小写取决于数据库排序规则。所以请 OP,显示您数据库中的数据和您正在搜索的filterTxt。
标签: c# entity-framework linq contains