如何使用LINQ按人员分组采购List并展示采购信息?
使用LINQ按人员分组采购记录
你可以通过LINQ的GroupBy方法实现按人员分组,结合Select将分组结果转换成符合展示需求的结构,具体实现如下:
基础分组实现(按person_id分组)
// 按person_id分组,并转换为包含人员信息和采购列表的结构 var groupedPurchases = l.GroupBy(item => item.person_id) .Select(group => new { person_id = group.Key, person_name = group.First().person_name, // 同组内人员名称一致,取第一个即可 purchases = group.Select(item => new { item.shirt, item.cost }).ToList() });
严谨分组实现(同时按person_id和person_name分组)
如果需要避免因异常数据(比如同一person_id对应不同person_name)导致的错误,可以同时将person_id和person_name作为分组键:
var groupedPurchases = l.GroupBy(item => new { item.person_id, item.person_name }) .Select(group => new { person_id = group.Key.person_id, person_name = group.Key.person_name, purchases = group.Select(item => new { item.shirt, item.cost }).ToList() });
循环展示分组结果
得到分组后的集合后,即可按照你期望的逻辑循环展示:
foreach (var person in groupedPurchases) { Display(person.person_id); Display(person.person_name); foreach (var purchase in person.purchases) { Display(purchase.shirt); Display(purchase.cost); } }
内容的提问来源于stack exchange,提问作者TheIronCheek
相关产品推荐
相关产品推荐

