我有 Customers 的集合,可能根据他们的偏好进行分组( oranges,apples )
CustomerID | Preference | Age
1 oranges 35
2 apples 32
... ... ...
100 oranges 48
我需要一些摘要表,所以可以将 Customers 分组到这样的新集合中:
var GroupedCustomers = Customers
.GroupBy (a => new {a.Preference, ...}) //could be grouped by more complex compound key
.Select (a => new { CustomerPreference = a.Key.Prefence, TotalOrders = a.Count () })
如何使用其成员的所有原始属性(例如"年龄"每个客户)访问每个组的内部集合?例如,我需要绑定"橙色爱好者的列表"到GridView并计算他们的平均年龄。
实际案例中的问题是一个复杂的复合键和数百个组,所以我不想每次都从原始集合中枚举它们。
答案 0 :(得分:1)
您需要将未组合的集合绑定到GridView,然后您可以应用过滤器,保持View和ViewModel synchronized
按照How to: Group, Sort, and Filter Data in the DataGrid Control
下的文档示例进行操作绑定只是subcase。我想找到一般方法。我想说吧 想要对许多属性进行一些数学处理 小组成员(如年龄)。你回答的意思是我申请的 GroupBy,所有未包含在组密钥中的属性 迷路了吗?
否,他们不是。将分组项目的列表添加到组中,例如
var GroupedCustomers = Customers
.GroupBy (c=> new {a.Preference, ...}, //could be grouped by more complex compound key
c => c,
(key, g) => new {
CustomerPreference = key.Preference,
SubItems = g.ToList(), // <= this is your inner collection
...})
答案 1 :(得分:0)
这是我自己的尝试。
我们应该限制GroupBy
的初始声明,以保持集合不变:
var GroupedCustomers = Customers
.GroupBy (a => new {a.Preference, ...});
然后,内部集合将如下所示:
var GroupByIndex = GroupedCustomers[0]; //retrieve entire group by its index
var GroupdByContent = GroupedCustomers.First(i => i.Key.Preference == "oranges") //retrieve group by key