我以为我理解LINQ是如何包含的,但是我没有得到我的声明来过滤结果。
在这种情况下,我原本期望返回前2条记录,但是我得到了所有结果。
为什么我的LINQ包含没有过滤数据?
MYTABLE:
CODE VERSION STRING_ID
A1 1 AAA
A1 1 BBB
A1 1 CCC
A1 1 DDD
List<String> ListStrings has values of:
AAA
BBB
My Query:
var query = context.MYTABLE.Where(x => x.CODE == "A1" && x.VERSION == "1");
if (ListStrings!= null)
{
query.Where(x => ListStrings.Contains(x.STRING_ID));
}
return query.ToList();
答案 0 :(得分:5)
Where()
方法本身将返回已应用过滤的IEnumerable
集合,因此您需要将查询对象设置为等于它:
query = query.Where(x => ListStrings.Contains(x.STRING_ID));