c# - 使用Linq检查List <List <int> []>是否包含值

标签 c# linq list

我有一个List<List<int>[]>包含列表项,例如

List<int> a= new List<int>(){ 2, 2, 3, 4, 5};
List<int> b= new List<int>() { 2, 2, 2, 6 };
List<List<int>[]> c = new List<List<int>[]>();
c.Add(new[]{a,b});


我想检查c中包含的任何数组是否具有2作为值。这或多或少是对还是错的答案。

到目前为止,我可以使用Linq代码检查a或b是否包含2

var result = a.Any(p=> p==2); // this outputs 2


将此扩展到c

var result=c.Any(p=> p.Select(value => value.Contains(2)).First());


//上面的代码p => p.Select(value => value.Contains(2))返回一个Enumerable,我取第一个。我不太肯定这是使用linq解决此问题的正确方法。
有更好的方法吗?

最佳答案

如果您知道如何在单个列表中进行搜索,则应该能够以完全相同的方式在列表中进行搜索。只需使用SelectMany展平它并使用相同的条件即可。

对于您的情况,如果这是单个列表:

var result = a.Any(p => p == 2);


那么对于列表列表,它将是:

var result = c.SelectMany(x => x).Any(p => p == 2);


与第三级类似,如您的示例:

var result = c.SelectMany(x => x).SelectMany(x => x).Any(p => p == 2);

关于c# - 使用Linq检查List <List <int> []>是否包含值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38401836/

相关文章:

c# - 如何在 WPF textBlock 控件中滚动文本?

c# - SWIG:C++ 到 C#,指针到指针编码

c# - 更改类库项目中的数据库连接字符串

c# - 如何对嵌套的 LINQ 提供的集合中的项目进行排序

linq - Linq to sql作为对象数据源-部分类的设计器问题

python - 如何使用 python 将列表中的子字符串与另一个列表进行比较

c# - 如何在不等待的情况下等待另一个服务在后台完成任务?

c# - 如何在 WPF 数据网格中为每列添加一个 ContextMenu

c - 我在 C 中使用指针时遇到问题

python - 在 python 中写入二进制输出最有效的方法是什么?