我试图过滤以下列表:
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}
}我的筛选条件应该是:“只包含奇数”,所以在应用过滤器之后,我的列表不应该有任何偶数。
我的尝试:
list = list.Where(x => x.Where(y => y%2 == 1).ToList()).ToList()期望输出:
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,但不知道如何使这个集合工作。
有什么想法吗?
发布于 2021-06-26 08:37:54
您可以使用以下方法:
list = list.Select(x => x.Where(i => i % 2 == 1).ToList())
.Where(x => x.Any())
.ToList();在这里,我们使用Select()来迭代外部列表的元素,然后使用Where()来过滤内部列表。之后,我们调用外部列表上的Where()来过滤空的内部列表。最后一部分是可选的;如果需要保留空列表,可以随意删除它。
注意:正如@Dmitry在评论中所指出的那样,如果您想保留负奇数,最好使用i % 2 != 0。
https://stackoverflow.com/questions/68140591
复制相似问题