我必须查询存储库,其中列a = {myvalue},列b在集合中具有任何值。
这就是我所拥有的:
Application[] applicationCollection = GetAllApplications();
var result = repo.GetAll(r => r.Email == myEmail && r.Application.In(applicationCollection));
我无法弄清楚如何编写“in”部分...
最好如何做到这一点是最好的,所以我可以学习它,而不是只是得到答案:)。谢谢大家。
(我确信这是一个重复的问题,但我的Google /搜索技能显然很差。)
答案 0 :(得分:1)
item in collection
的SQL思想是用C#(包括LINQ)编写的collection.Contains(item)
。在您的示例中,这可能是:
var result = repo.GetAll(r => r.Email == myEmail &&
applicationCollection.Contains(r.Application));
答案 1 :(得分:0)
ApplicationCollection.Contains(r.Application)
答案 2 :(得分:0)
使用.Contains(collection)
代替in
。 Here's a link since you wanted one.
答案 3 :(得分: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的操作,则这将不兼容。
注意:我并不是要暗示这种扩展方法可能是个好主意 - 我只是说可以写一个这样的。