我在用实体框架5.0,并且我在 LINQ 查询方面遇到问题。我有以下方法,它接受一个整数值,然后将其传递到查询中。这很好用。
public IList<tblcoursebooking> GetStandardReport(int AttendanceID)
{
return _UoW.tblcoursebookingRepo.All
.Where(cb => cb.Attended.Equals(AttendanceID)
.ToList();
}
但是,我需要更改方法以使其接受整数列表,然后取出所有记录Attended等于任何整数列表。像这样的东西
public IList<tblcoursebooking> GetStandardReport(List<int> AttendanceIDs)
{
return _UoW.tblcoursebookingRepo.All
.Where(cb => cb.Attended.Equals == any AttendanceIDs
.ToList();
}
我想尝试并使用Contains or Any然而,LINQ 关键字为Attended是单个值,而不是集合,点后唯一可用的属性是
相比于,
等于,
获取哈希码,
获取类型,
获取类型代码,
转字符串
有人可以帮忙吗?
谢谢你的时间。
Use the Contains
函数,它将根据给定列表匹配每个 ID:
return _UoW.tblcoursebookingRepo.All
.Where(cb => AttendanceIDs.Contains(cb.Attended))
.ToList();
一般来说,请记住,Where 子句只不过是一个带有嵌套 if 语句的花哨的 foreach(不过,这是一个非常花哨的语句)。它需要一个计算结果为布尔值的表达式。如果您只需要检查一项,而不使用 LinQ,您很快就会想出如下结果:
if(AttendanceIDs.Contains(myItem.Attended))
您可以以完全相同的方式处理 LinQ 的Where 子句,如上所示:) 如果您感到困惑,只需考虑一下如何检查一次,因为 LinQ 将为您完成迭代部分。
Update
正如费萨尔的回答中提到的,WhereIn
提供类似的功能。还没用过,但似乎是一种更简洁的方法。
不过,我不会改变我的答案,因为我觉得更重要的是指出如何在Where
条款,这也应该有助于解决您将来可能遇到的所有类似问题WhereIn
将不相关。
但尽管如此,你也可以使用WhereIn
在这种特殊情况下:-)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)