gpt4 book ai didi

c# - 总和列表到新列表

转载 作者:太空宇宙 更新时间:2023-11-03 21:45:52 25 4
gpt4 key购买 nike

我有一个项目列表,每个项目的总值(value)..有的在不同的层..如下图

**Name, Layer, Value**
Item 1, Layer1, 100
Item 1, Layer1, 200
Item 1, Layer2, 700

现在我想将这些组合成一个新的列表,并将它们合并在一起..如下图

**Name, List(Layer1Value, Layer2Value)**
Item 1, (300,700)

这是我目前的代码..

List<double> = 
Enumerable.Range(0, t.Select(u => u.LayerName).Distinct().Count())
.Select(idx => t.Select(a => a.sum).Sum()).ToList()

这当然是错误的,并且将总数放在所有值点中..像这样

Item 1, (1000,1000)

不确定如何让它正常工作,任何帮助都会很棒..谢谢


添加帮助..从这样的列表开始

private class Items
{
public string Name;
public string Layer;
public double Value;
}

List<Items> MyItems = new List<Items>();

像这样的列表

private class CombinedItems
{
public string Name;
public List<double> LayerValues;
}

List<CombinedItems> MyCombinedItems = new List<CombinedItems>();

它应该以特定的顺序输出..例如,如果有 4 层..Layer1, Layer2, Layer3, Layer4..

并且 item1 在 Layer1 和 Layer 4 中有值..然后是

列表需要为 (Layer1Value, 0, 0, Layer4Value)

最佳答案

list.GroupBy(x => x.Name)
.Select(g => new {
Name = g.Key,
Elements = g.GroupBy(x => x.Layer)
.Select(g => g.Sum(z => z.Value))
});

编辑:

var layers = list.Select(x => x.Layer).Distinct().OrderBy(x => x);
var result = list.GroupBy(x => x.Name)
.Select(g => new
{
Name = g.Key,
Values = layers.Select(x => g.Where(n => n.Layer == x)
.Sum(z => z.Value))
});

关于c# - 总和列表到新列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17048786/

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