我有一个事件列表,每个事件都有一个datetime属性。 我需要按年将列表拆分为子列表。 诀窍是,我的事件列表是从数据库中提取的,可能会发生变化,所以我不能只对这些年份进行硬编码并将事件排序到正确的年份。 有没有办法可以将我的主要事件列表拆分为子列表,以便在每个子列表中,每个事件都在同一年 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
目前,我有一个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.