什么';s此linq表达式调用in方法的语法
本文关键字:in 调用 方法 语法 表达式 linq 什么 | 更新日期: 2023-09-27 18:22:43
我必须查询一个存储库,其中列a={myvalue}和列b在集合中具有任何值。
这是我的:
Application[] applicationCollection = GetAllApplications();
var result = repo.GetAll(r => r.Email == myEmail && r.Application.In(applicationCollection));
我不知道如何写"in"部分。。。
最好是链接到如何做到这一点,这样我就可以学习它,而不是只得到答案:)。谢谢大家。
(我确信这是一个重复的问题,但我的谷歌/搜索技能显然很差。)
item in collection
的SQL思想是用C#(包括LINQ)写成collection.Contains(item)
的。在您的示例中,这可能是:
var result = repo.GetAll(r => r.Email == myEmail &&
applicationCollection.Contains(r.Application));
ApplicationCollection.Contains(r.Application)
使用.Contains(collection)
而不是in
。这是一个链接,因为你想要一个。
如果你想按照你所展示的方式编写它,你可以编写这个扩展方法:
public static bool In<T>(this T item, IEnumerable<T> set)
{
return set.Contains(item);
}
然后像你在问题中所做的那样使用它:
Application[] applicationCollection = GetAllApplications();
var result = repo.GetAll(r =>
r.Email == myEmail &&
r.Application.In(applicationCollection));
如果你只使用内存中的集合,这会很好。然而,如果您正在执行类似LINQ to SQL的操作,这将是不兼容的。
注意:我并不是想暗示这个扩展方法可能是个好主意——我只是说可以写这样的方法