LinqQuery-OrderBy字段(字符串类型-应转换为int)-用于每个组

本文关键字:int 用于 转换 字段 字符串 类型 LinqQuery-OrderBy | 更新日期: 2023-09-27 17:55:04

代码:

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、…等(。

LinqQuery-OrderBy字段(字符串类型-应转换为int)-用于每个组

您可以通过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)