我有对象列表,在视图上,我想按父名分组显示它们,在显示父名称时没有重复项,例如每个对象 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
。