gpt4 book ai didi

C# LINQ 求和数组属性

转载 作者:行者123 更新时间:2023-12-01 21:28:22 29 4
gpt4 key购买 nike

所以我有一个包含值数组的类,以及这些类的列表。

我想返回列表中所有项目的总和(或任何其他操作),也作为一个数组。

例如{1,2,3}、{10,20,30} 和 {100,200,300} 的总和为 {111,222,333}

因此,结果数组的第一个元素将是输入数组中所有第一个元素的总和,第二个元素将是输入数组中所有第二个元素的总和,依此类推。

我可以用:

    public class Item
{
internal int[] Values = new int[3];
}

public class Items : List<Item>
{
internal int[] Values
{
get
{
int[] retVal = new int[3];
for (int x = 0; x < retVal.Length; x++)
{
retVal[x] = this.Sum(i => i.Values[x]);
}
return retVal;
}
}
}

但我觉得这应该可以通过使用 LINQ 作为单行来实现。是吗?

最佳答案

是的,这可以使用单个 linq 代码行,使用 Enumrable.RangeMaxSelectSum 来完成:

请注意,如果其中一个数组的长度与其他数组的长度不同,我还包含了一个简单的条件,使您免于 IndexOutOfRangeException

internal int[] ValuesLinq
{
get
{
return Enumerable
.Range(0, this.Max(i => i.Values.Length))
.Select(ind => this.Sum(item => item.Values.Length > ind ? item.Values[ind] : 0))
.ToArray();
}
}

您可以在 Rextester 上看到现场演示

关于C# LINQ 求和数组属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62755174/

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