0

我必须查询一个存储库,其中列 a = {myvalue} 和列 b 在集合中具有任何值。

这是我所拥有的:

Application[] applicationCollection = GetAllApplications();
var result = repo.GetAll(r => r.Email == myEmail && r.Application.In(applicationCollection));

我不知道如何写“in”部分......

最好链接到如何做到这一点,这样我就可以学习它,而不是仅仅得到答案:)。谢谢大家。

(我确信这是一个重复的问题,但我的谷歌/搜索技能显然很差。)

4

4 回答 4

1

的 SQL 思想item in collection是用 C#(包括 LINQ)编写为collection.Contains(item). 在您的示例中,这可能是:

var result = repo.GetAll(r => r.Email == myEmail &&
               applicationCollection.Contains(r.Application));
于 2013-07-15T22:40:35.603 回答
0
ApplicationCollection.Contains(r.Application)
于 2013-07-15T22:40:37.613 回答
0

使用.Contains(collection)而不是in. 这是一个链接,因为你想要一个。

于 2013-07-15T22:41:13.523 回答
0

如果你想按照你展示的方式编写它,你可以编写这个扩展方法:

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 之类的操作,这将不兼容。

注意:我并不是要暗示这种扩展方法可能是一个好主意——我只是说可以这样写。

于 2013-07-15T23:00:59.157 回答