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)