c# - 如何获得至少包含另一个列表的所有值的列表?

标签 c# linq linq-to-sql

我有这样的情况,一个列表必须至少包含另一个列表的值。假设我们有一个包含值 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;

我只获得与“必需”列表完全匹配的列表。

我的问题是,如何解决 Linq 2 SQL 查询中的情况?

最佳答案

尝试

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;

关于c# - 如何获得至少包含另一个列表的所有值的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23290347/

相关文章:

c# - 根据条件确定 LINQ Enumerable 是否包含对象?

linq-to-sql - Linq To SQL 分组依据和求和

c# - 在 C# 中使用全局变量的最佳实践

c# - 将 gridview 与海量数据绑定(bind)时出现性能问题

c# - 使用 Linq 从集合中获取组

.net - EF 和 Linq2Sql 中的 DataContext 可以存活多久?

c# - 如何使用数组排序 linq 结果?

c# - Windows 操作系统之间的 SQL 连接字符串是否不同?

c# - 使用 C# .NET 处理 XML 中的禁用字符

c# - 将 IDictionary<string,string> 附加到 WebHeaderCollection