如何获取至少包含另一个列表的所有值的列表
本文关键字:列表 另一个 包含 何获取 获取 | 更新日期: 2023-09-27 17:59:58
我遇到的情况是,一个列表必须至少包含另一个列表的值。假设我们有一个值为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;
我只得到与"必需"列表完全匹配的列表。
我的问题是,如何解决Linq2SQL查询中的问题?
尝试
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;
尝试此链接
.NET有办法检查列表a是否包含列表b中的所有项吗?
在这里,您可以在所有可用的列表中运行相同的上述方法。
public static bool ContainsAllItems(List<T> a, List<T> b)
{
return !b.Except(a).Any();
}
这会检查b中是否有不在a中的元素,然后反转结果。