EntityFramework Linq查询

EntityFramework Linq查询,linq,entity-framework-4,dbcontext,Linq,Entity Framework 4,Dbcontext,我无法理解以下问题的错误: var tmp = dbset.AsEnumerable<mytable>().Where( c=>c.Barcode.Contains("11") && c.Description.Contains("EW") ); return tmp; 如果我在sql server中运行此命令,我会得到四行,但在运行linq查询时不会 我得到0行 谁能帮帮我吗。这是一个相当简单的问题,让我非常头痛。非常感谢如果忘记提取数据,请执行以下操作:

我无法理解以下问题的错误:

var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp;
如果我在sql server中运行此命令,我会得到四行,但在运行linq查询时不会 我得到0行


谁能帮帮我吗。这是一个相当简单的问题,让我非常头痛。非常感谢

如果忘记提取数据,请执行以下操作:

var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp.ToList();

如果忘记提取数据,请执行以下操作:

var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp.ToList();
仅使用一个
条件运行查询?“c.Barcode.包含(“11”)”

该代码应该可以正常运行。

是否只使用一个
条件运行查询?“c.Barcode.包含(“11”)”

dbset.AsEnumerable<mytable>()...
该代码应该运行良好。

dbset.AsEnumerable()。。。
dbset.AsEnumerable<mytable>()...
不要那样做

在检查
Where
条件之前,您将导致从数据库中提取所有数据

除此之外,还不清楚为什么您的查询不起作用。你的语法是正确的。我猜数据看起来不像你想象的那样。或者您希望
如%EW%
以不区分大小写的方式匹配某些内容,并且由于LINQ对对象求值Where子句,因此您无法获得该行为。

dbset.AsEnumerable()。。。
不要那样做

在检查
Where
条件之前,您将导致从数据库中提取所有数据


除此之外,还不清楚为什么您的查询不起作用。你的语法是正确的。我猜数据看起来不像你想象的那样。或者,您希望
如%EW%
以不区分大小写的方式匹配某些内容,并且由于LINQ正在对对象计算Where子句,因此您无法获得该行为。

另外,不要认为
可计算的
会帮到您,因为
IEnumerable
本身是惰性的,只有在迭代时才会返回一个元素(例如
ToList()
):)yes ToList对这个特定的查询有效(使用AsEnumerable)。谢谢Bunch@VladislavZorov,但AsEnumerable获取数据。@user875615,使用我的第二种样式。首先从服务器获取所有数据,然后进行不好的处理。另外,不要认为
AsEnumerable
会对您有所帮助,因为
IEnumerable
本身是惰性的,只有在迭代时才会返回元素(例如
ToList()
):)是的,ToList为这个特定的查询(使用AsEnumerable)。谢谢Bunch@VladislavZorov,但AsEnumerable获取数据。@user875615,使用我的第二种样式。首先从服务器获取所有数据,然后处理不好的数据。为了澄清,发送。实际上我并没有这么做。我正在使用LinqKit中的PredicateBuilder,这是我用来构建表达式的for循环的一个问题。我只是写了linq查询来快速测试我认为的结束查询应该是什么样子,但它不起作用。对于Tx的提示,它增加了我的知识EF@user875615:没问题。作为将来的参考,我建议您使用LINQPad查看您的查询生成了什么样的SQL。这是一种缩小查询问题范围的简单方法。Tx用于澄清。实际上我并没有这么做。我正在使用LinqKit中的PredicateBuilder,这是我用来构建表达式的for循环的一个问题。我只是写了linq查询来快速测试我认为的结束查询应该是什么样子,但它不起作用。对于Tx的提示,它增加了我的知识EF@user875615:没问题。作为将来的参考,我建议您使用LINQPad查看您的查询生成了什么样的SQL。这是一种简单的方法来缩小查询问题的范围。是的,我可以,问题不是Linq,而是我尝试动态生成的PredicateBuilder表达式。是的,我可以,问题不是Linq,而是我尝试动态生成的PredicateBuilder表达式。