我的情况是列表必须至少包含另一个列表的值。因此,假设我们列出了值为1,2,3的列表A.这是包含所需值的列表。
列表B的值为1,5,6,7 列表C具有值1,2,3,4,7 列表D的值为2,5,6
在这种情况下,我只需要列表C,因为这是唯一包含值1,2结束3的列表。
我已经尝试过这个,但这不起作用,因为它总是如此:
query = from doc in query
let tagIds = from t in doc.Tags select t.Id
where parameters.TagIds.Except(tagIds).Count() <= parameters.TagIds.Count()
select doc;
使用时:
query = from doc in query
let tagIds = from t in doc.Tags select t.Id
where !parameters.TagIds.Except(tagIds).Any<int>()
select doc;
我只会获得列表与列表完全匹配的列表&#39; required&#39;列表。
我的问题是,如何在Linq 2 SQL查询中解决我的情况?
答案 0 :(得分:1)
尝试
var query = from doc in query
let tagIds = from t in doc.Tags select t.Id
where parameters.All(p => tagIds.Contains(p))
select doc;
答案 1 :(得分:0)
试试此链接
Does .NET have a way to check if List a contains all items in List b?
在这里,您可以在所有可用列表中运行相同的上述方法。
public static bool ContainsAllItems(List<T> a, List<T> b)
{
return !b.Except(a).Any();
}
检查b中是否有任何元素不在 - 然后反转结果。