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/

相关文章:

java - c# RSA 使用私钥加密

c# - C# 中 Task.FromResult<TResult> 有什么用

c# - 具有不同内核的指数移动平均线

Android 房间列表或可变列表返回类型

Python - 两个相同长度的列表之间的完全区别

c# - 新鲜的 ASP.NET Core API 返回空的 JSON 对象

c# - 如何从其父级返回集合的第一个对象

c# - Linq 聚合累积的 bool 值

c# - MongoDB C# 驱动程序获取速度快(1) 但速度慢(2)

python - 如何在Python上制作具有不同大小的最后一个参数的3D矩阵