gpt4 book ai didi

c# - 通过在满足条件时添加项目来创建列表

转载 作者:行者123 更新时间:2023-11-30 14:46:01 26 4
gpt4 key购买 nike

public class Connector
{
public double Id { get; set; }
public string Name { get; set; }
public double Len { get; set; }
public double Height { get; set; }
public double Count { get; set; }
}

我有一个这样的设施的列表:

List<Connector> resutsList = new List<Connector>();

以下是此类列表内容的示例:

1 | IZO | 1000 | 200 | 2
2 | IZO | 1000 | 200 | 4
3 | IZO | 600 | 200 | 5
4 | IZO | 1000 | 200 | 2
5 | IZO | 600 | 180 | 7
6 | IZO | 600 | 180 | 3

我需要这样一个结果:(这是满足Len和Height条件时Count位置的总和。)

1 | IZO | 1000 | 200 | 8
2 | IZO | 600 | 200 | 5
3 | IZO | 600 | 180 | 10

是否可以进行任何 Linq 组合?

或者另一个简单的解决方案?

最佳答案

这是我的努力。

class Program
{
public class Connector
{
public Connector(double id, string name, double len, double height, double count)
{
Id = id;
Name = name;
Len = len;
Height = height;
Count = count;
}

public double Id { get; set; }
public string Name { get; set; }
public double Len { get; set; }
public double Height { get; set; }
public double Count { get; set; }
}

static void Main(string[] args)
{
var l = new List<Connector>
{
new Connector(1, "IZO", 1000, 200, 2),
new Connector(2, "IZO", 1000, 200, 4),
new Connector(3, "IZO", 600, 200, 5),
new Connector(4, "IZO", 1000, 200, 2),
new Connector(5, "IZO", 600, 180, 7),
new Connector(6, "IZO", 600, 180, 3)
};

var sums = from c in l
group c by new { c.Name, c.Len, c.Height } into g
select new { g.First().Id, g.Key.Name, g.Key.Len, g.Key.Height, Count = g.Sum(x => x.Count) };

}
}

``` enter image description here

请注意,ID 与示例中的不完全相同。 (1,2,3 对 1,3,5)

我不相信您可以使用查询表达式语法获取索引,但这是另一种 Linq 方法来获取所需的索引:

            var sums = l.GroupBy(c => new { c.Name, c.Len, c.Height })
.Select((g, index) => new{
Id = index+1,
g.Key.Name,
g.Key.Len,
g.Key.Height,
Count = g.Sum(x => x.Count)
});

请注意index + 1

enter image description here

关于c# - 通过在满足条件时添加项目来创建列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922331/

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