c# - 使用 LINQ 我有一个列表列表,如何选择每个列表中存在的所有对象?

标签 c# linq

<分区>

我有一个列表列表:

List<Tuple<string, List<SomeObject>>

我想选择存在于上面列表的所有行中的所有 SomeObjects

有些只存在于一个或两个列表中,但我希望所有对象都存在于每个列表中,而其他对象则被丢弃。

如果没有一堆 C# 代码,我无法找到一个优雅的解决方案。有什么好的方法吗?

最佳答案

list.Select (x => x.Item2 as IEnumerable<SomeObject>)
    .Aggregate((x,y)=> x.Intersect(y))
    .ToList();

或者,正如 Jeppe Stig Nielsen 所建议的(我认为它更优雅):

list.Select(x => x.Item2.AsEnumerable())
    .Aggregate(Enumerable.Intersect)
    .ToList();

关于c# - 使用 LINQ 我有一个列表列表,如何选择每个列表中存在的所有对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27922027/

相关文章:

c# - 为什么 DateTime 没有内置类型?

c# - Linq Foreach GroupBy 在哪里

c# - 将 IEnumerable<IEnumerable<T>> 转换为 List<List<T>>

c# - 如何将可枚举类型转换为 AsyncEnumerable 类型?

c# - IEnumerable<TimeSpan> 的 Sum 方法扩展

javascript - 是否有用于 javascript 的任何生产就绪的 LINQ 实现?

c# - 在 C# 中使用来自 .Pem/.Pkcs8 key 文件的 MD5WithRSA 对数据进行签名

c# - 从模型创建表

c# - 两个程序集中具有相同名称的类(有意)

c# - Response.Redirect 到新窗口