首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何过滤二维列表?

如何过滤二维列表?
EN

Stack Overflow用户
提问于 2021-06-26 08:32:36
回答 1查看 96关注 0票数 2

我试图过滤以下列表:

代码语言:javascript
复制
List<List<int>> list = new List<List<int>>()
{
  new List<int>(){1,2,3,4,5},
  new List<int>(){6,7,5,4,5},
  new List<int>(){1,3,3,222,1}
}

我的筛选条件应该是:“只包含奇数”,所以在应用过滤器之后,我的列表不应该有任何偶数。

我的尝试:

代码语言:javascript
复制
list = list.Where(x => x.Where(y => y%2 == 1).ToList()).ToList()

期望输出:

代码语言:javascript
复制
List<List<int>> list = new List<List<int>>()
{
  new List<int>(){1,3,5},
  new List<int>(){7,5,5},
  new List<int>(){1,3,3,1}
}

我知道如何在一维集合上使用Linq,但不知道如何使这个集合工作。

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-26 08:37:54

您可以使用以下方法:

代码语言:javascript
复制
list = list.Select(x => x.Where(i => i % 2 == 1).ToList())
           .Where(x => x.Any())
           .ToList();

在这里,我们使用Select()来迭代外部列表的元素,然后使用Where()来过滤内部列表。之后,我们调用外部列表上的Where()来过滤空的内部列表。最后一部分是可选的;如果需要保留空列表,可以随意删除它。

注意:正如@Dmitry在评论中所指出的那样,如果您想保留负奇数,最好使用i % 2 != 0

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68140591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档