使用 LINQ 对数据进行分组



我有对象列表,在视图上,我想按父名分组显示它们,在显示父名称时没有重复项,例如每个对象 MyObject 都有 ID、名称、父名

MyObject
public int Id {get; set; }
public string Name {get; set; }
public string ParentName {get; set; }

在我的观点上

@model List<MyObject> 

我想像这样显示数据

---- PARENT A -----
   ObjectOne Name
   ObjectTwo Name
   ObjectThree Name
 ---- PARENT B -----
   ObjectOne Name
   ObjectTwo Name
   ObjectThree Name

所以我试过这样的

@{ 
  foreach(var mydata in @Model.GroupBy(d=>d.ParentName).Select(g=>g.First()))
  {
     // this returns only one Name per parent, I know this is because g.First() statement, 
     // but I dont know how to select all items instead of this one?
  }
}
foreach(var mydata in @Model
    .GroupBy(d=>d.ParentName)
    .Select(g=>
         Tuple.Create(
               g.Key,
               g)))

(当然,你可以通过使用新的自定义结构而不是这个丑陋的元组来美化代码)。

使用 g.ToList() 而不是 g.First() 并将Select更改为 SelectMany

@Model.GroupBy(d => d.ParentName).SelectMany(g => g.ToList())

顺便说一句,如果您使用的是MVC,请不要在View中这样做.您应该在Controller上执行此类操作,然后将结果传递给View

相关内容

  • 没有找到相关文章

最新更新