C# 每个组的Linq查询-按字段排序(字符串类型-应转换为int)

C# 每个组的Linq查询-按字段排序(字符串类型-应转换为int),c#,asp.net,.net,linq,c#-4.0,C#,Asp.net,.net,Linq,C# 4.0,代码: 上面的代码对记录进行分组并显示结果。我需要一个类型为string的字段(rank),该字段应转换为int,并应用于已排序的组state,其中,每个state组应根据rank字段(升序)显示记录 简而言之,我需要将rank字段添加到上述代码中,以显示每个状态组的rank(升序)中的记录 我需要根据各组的等级对记录进行排序状态。 我不知道如何在上面的代码中添加rank字段。例如,rank字段具有类型为string的值(1、2、3等)。您可以按rank对每组中的列表进行排序: var grou

代码:

上面的代码对记录进行分组并显示结果。我需要一个类型为
string
的字段(
rank
),该字段应转换为
int
,并应用于已排序的组
state
,其中,每个
state
组应根据
rank
字段(
升序
)显示记录

简而言之,我需要将
rank
字段添加到上述代码中,以显示每个
状态
组的
rank
升序
)中的记录


我需要根据各组的
等级
对记录进行排序
状态

我不知道如何在上面的代码中添加
rank
字段。例如,
rank
字段具有类型为
string
的值(1、2、3等)。您可以按
rank
对每组中的列表进行排序:

var groupedList = list.GroupBy(u => u.state)
                                            .OrderBy(grp => StateToOrder(grp.Key))
                                            .Select(grp => grp.ToList())
                                            .ToList();
如果要将列组为空的记录放在末尾,请替换

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
}


我认为一些示例输入/输出在这里会有所帮助。例如,rank字段具有StringBy类型的值(1、2、3等)。我需要根据每个组的
rank
状态对记录进行排序
state
我不知道在上面的代码中添加rank字段的位置和方式尝试:
OrderBy(grp=>grp.rank)
我尝试了你的答案,得到了
无法将带[]的索引应用于'AnonymousType#1'类型的表达式。
error@StackOverflow您在哪一行出现此错误?@StackOverflow不使用
g[0]
使用
d.Data.ElementAt(0)好的,我会试试。实际访问
计数
,我得到了这个error@StackOverflow在foreach中,您可以执行
g.Data.Count()
String.IsNullOrWhiteSpace(x.rank) ? 0 : Convert.ToInt32(x.rank)
String.IsNullOrWhiteSpace(x.rank) ? Int32.MaxValue : Convert.ToInt32(x.rank)