gpt4 book ai didi

c# - 如何将 IEnumerable> 转换为 IEnumerable

转载 作者:太空狗 更新时间:2023-10-29 22:04:04 24 4
gpt4 key购买 nike

我有一个 IEnumerable<IEnumerable<T>>我想转换为单一维度集合的集合。是否可以使用通用扩展方法来实现这一点?现在我正在这样做以实现它。

List<string> filteredCombinations = new List<string>();

//For each collection in the combinated results collection
foreach (var combinatedValues in combinatedResults)
{
List<string> subCombinations = new List<string>();
//For each value in the combination collection
foreach (var value in combinatedValues)
{

if (value > 0)
{
subCombinations.Add(value.ToString());
}
}
if (subCombinations.Count > 0)
{
filteredCombinations.Add(String.Join(",",subCombinations.ToArray()));
}
}

如果无法获得通用解决方案,我该如何以优雅时尚的方式对其进行优化。

最佳答案

您可以使用 Enumerable.SelectMany为此的扩展方法。

如果我正确阅读了您的代码,则代码为:

var filteredCombinations = combinatedResults.SelectMany(o => o)
.Where(value => value > 0)
.Select(v => v.ToString());

编辑:如评论所述,上述代码并未像原始代码那样将子集的每个元素连接到一个字符串。使用内置方法,您可以使用:

var filteredCombinations = combinatedResults
.Where(resultSet => resultSet.Any(value => value > 0)
.Select(resultSet => String.Join(",",
resultSet.Where(value => value > 0)
.Select(v => v.ToString()).ToArray()));

关于c# - 如何将 IEnumerable<IEnumerable<T>> 转换为 IEnumerable<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2240346/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com