[英]Combine the values of a certain property based on the value of a different property in a List of Objects in C#?
目前,我有一个List<OrderModel>
。 OrderModel
是一个包含两个属性的类: OrderId
和Total
。 在这种情况下, OrderId
不是唯一的。 我想结合OrderId
匹配的Total
属性的值。
我有一个解决方案,但是我想知道是否有更好的方法(就性能而言)来完成此任务。 这是我目前正在做的事情:
在填充List<OrderModel>
对象时,我还将OrderId
添加到List<long>
。 因此,现在我有两个列表。
foreach (var id in orderIdList.Distinct())
{
var orders = orderModelList.Where(l => l.OrderId == id).ToList();
if (orders.Count() > 1)
{
var firstOrder = orders.FirstOrDefault();
orders.Remove(firstOrder);
foreach (var order in orders)
{
firstOrder.Total += order.Total;
orderModelList.Remove(order);
}
}
}
您正在版本中进行许多无用的枚举。 假设您有一个订单列表,则可以使用GroupBy
进行大多数过滤:
var orderModelList = orders.GroupBy(o => o.Id)
.Select(group => new OrderModel
{
Id = group.Key,
Total = group.Sum(o => o.Total)
})
.ToList();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.