代码:
var groupedList = list.GroupBy(u => u.state)
.OrderBy(grp => StateToOrder(grp.Key))
.Select(grp => grp.ToList())
.ToList();
上面的代码将记录分组并显示结果。我想要一个类型为string
的字段(rank
(,该字段应转换为int
并应用于排序组state
,其中,每个state
组应显示基于rank
字段(ascending order
(的记录。
简而言之,我需要在上面的代码中添加rank
字段,以显示每个state
组的rank
(ascending order
(中的记录。
我需要为每组state
订购基于rank
的记录。我不知道在上面的代码中在哪里以及如何添加rank
字段。例如,rank
字段具有string
类型的值(1、2、3、…等(。
您可以通过rank
:对每组中的列表进行排序
var groupedList = list.GroupBy(u => u.state)
.OrderBy(grp => StateToOrder(grp.Key))
.Select(grp =>
new
{
grp.Key,
Data = grp.OrderBy(x => String.IsNullOrWhiteSpace(x.rank)
? 0 : Convert.ToInt32(x.rank))
});
foreach(var g in groupedList)
{
g.Key; // Key;
g.Data; // Ordered List for that state
}
如果您想将空秩的记录放在末尾,请替换
String.IsNullOrWhiteSpace(x.rank) ? 0 : Convert.ToInt32(x.rank)
带有
String.IsNullOrWhiteSpace(x.rank) ? Int32.MaxValue : Convert.ToInt32(x.rank)