我需要对两个列表的X和Y字段求和,但是第一个ID等于第二个ID。
我的代码:
//Program.cs
//(...)
class Point
{
public int Id { get; set; }
public int X { get; set; }
public int Y { get; set; }
public Point(int _Id, int _X, int _Y)
{
Id = _Id;
X = _X;
Y = _Y;
}
}
//(...)
List<Point> points = new List<Point>();
List<Point> sumsXY = new List<Point>();
//sum the X and Y of two lists, but points.Id must equal to sumsXY.Id
for (int i = 0; i < objcount; i++)
{
sumsXY[points[i].Id].X = sumsXY[points[i].Id].X + points[i].X;
sumsXY[points[i].Id].Y = sumsXY[points[i].Id].Y + points[i].Y;
}
需要帮忙。
大卫
您是否正在寻找这样的东西?
var sumsXY = points.GroupBy(x => x.Id)
.Select(g => new Point(g.Key, g.Sum(x => x.X),
g.Sum(x => x.Y)))
.ToList();
这会将具有相同ID的所有点组合在一起,并使用该组的ID以及该组中所有点的X和Y值之和为每个组创建一个新点。
该答案假定sumsXY
此操作开始时为空。如果不是这种情况,则可能需要澄清您的问题,并提供示例输入和预期输出。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句