我无法理解以下查询有什么问题:
var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp;
这应该与:
相同select * from mytable
where Barcode like '%11%' and Description like '%EW%';
如果我在sql server中运行它,我应该得到四行,但是当我运行linq查询时却没有 我得到0行。
请有人帮助我。这是一个简单的查询,它让我头疼。非常感谢你
答案 0 :(得分:3)
您忘记了获取数据,请执行以下操作:
var tmp = dbset.AsEnumerable<mytable>().Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp.ToList();
也不要尽快致电AsEnumerable
,请按以下方式使用:
var tmp = ctx.mytable.Where(
c=>c.Barcode.Contains("11") && c.Description.Contains("EW") );
return tmp.ToList();
答案 1 :(得分:2)
dbset.AsEnumerable<mytable>()...
不要这样做!
在检查Where
条件之前,您将从数据库中提取所有数据。
除此之外,您的查询无法正常运行并不十分清楚。你的语法是正确的。我猜测数据实际上看起来并不像你认为的那样。要么就是这样,要么你期望like %EW%
以不区分大小写的方式匹配某些东西,并且由于LINQ对象正在评估Where子句,所以你没有得到这种行为。
答案 2 :(得分:0)
仅使用一个 condition? " c.Barcode.Contains("11") "
运行查询。
该代码应运行良好。