【发布时间】:2016-08-21 13:58:09
【问题描述】:
我有一个类 Order 像
class Order
{
IEnumerable<Item> Items { get; set; }
}
物品类看起来像
class Item
{
string SomeProperty { get; set; }
string SomeProperty1 { get; set; }
string SomeProperty2 { get; set; }
}
Model 是一个类似 Order 的列表
@model IEnumerable<Order>
我想按一个顺序对相同的项目进行分组意味着在Item.SomeProperty上分组
我可以通过关注 (Collection list to grouped collection list using linq) 来实现这一点
var orderedGroups = Model
.SelectMany(order => order.Items)
.GroupBy(order => order.ItemNo)
.OrderByDescending(grp => grp.Count()).ToList();
有了这个,我想确保所有组都有相同数量的项目,具体取决于最大计数并将“空白”结果添加到计数较低但我不知道如何进一步进行的组。
【问题讨论】:
-
你可能在最后错过了一个 Select。
-
不确定您是否可以仅使用 linq 来做到这一点。如果你知道你想要多少,你可以使用.Where count = x,但如果不知道,那么你需要添加一些逻辑。如果您有 6 个组的计数:33 22 11 会发生什么?
-
@zivweissman 如果有 r 6 个订单,其中很少有 3 件商品,很少有 2 件商品,很少有 1 件商品,那么分组集合将在所有订单中各有 3 件商品,一些订单将有 r两个空白项。我需要设计一个比较屏幕,其中需要比较分组项目,并且还需要显示空白项目以使 html 看起来正确。