实体框架Linq查询

时间:2012-02-14 17:48:13

标签: linq entity-framework-4 dbcontext

我无法理解以下查询有什么问题:

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行。

请有人帮助我。这是一个简单的查询,它让我头疼。非常感谢你

3 个答案:

答案 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") "运行查询

该代码应运行良好。