linq分组,组排序,组内数据排序

.Net技术 码拜 10年前 (2015-05-10) 2015次浏览 0个评论
 

我有如下类型的数据,用于GridView进行显示(显示Name属性)

public class MyData
{
    public string GroupName { get; set; }// 组名
    public int GroupOrder { get; set; }// 组排序索引
    public int DataOrder { get; set; }// 组内数据索引
    // 其他属性(略)
}

如何使用linq首先使用GroupName进行分组,分组后使用GroupOrder对组进行排序,最后把每一个组里面的数据使用DataOrder进行数据排序?

GroupOrder和DataOrder值为0~N,按0~N从小到大排列。

如何使用linq首先使用GroupName进行分组,分组后使用GroupOrder对组进行排序
你是按GroupName分组的,那分组数据如何按GroupOrder排序?你确认你的需求是正确的?
除非你是max,min,avg,first,last之类的,否则你这个需求就不对
引用 1 楼 starfd 的回复:

如何使用linq首先使用GroupName进行分组,分组后使用GroupOrder对组进行排序
你是按GroupName分组的,那分组数据如何按GroupOrder排序?你确认你的需求是正确的?
除非你是max,min,avg,first,last之类的,否则你这个需求就不对

后来我想了一下,先后顺序不重要,重要的是能对组排序、分组,然后对组内数据排序即可。

from l in list
group l by l.GroupName?into g
select g.OrderBy(x=>x.GroupOrder).ThenBy(x=>x.DataOrder?);

两次排序和OrderBy,ThenBy结果是不一样的,看你需要的应该是上面这种

40分
linq分组,组排序,组内数据排序
如果lz要的是这种结果,那么你的第一步完全无用“使用GroupName进行分组” 直接全排序一遍
引用 4 楼 yanbuodiao 的回复:

linq分组,组排序,组内数据排序
如果lz要的是这种结果,那么你的第一步完全无用“使用GroupName进行分组” 直接全排序一遍

非常感谢,晚上回去试一下。
有一个疑问就是因为我要用GridView进行显示,我想用分组的方式显示。

引用 5 楼 LH806732 的回复:
Quote: 引用 4 楼 yanbuodiao 的回复:

linq分组,组排序,组内数据排序
如果lz要的是这种结果,那么你的第一步完全无用“使用GroupName进行分组” 直接全排序一遍

非常感谢,晚上回去试一下。
有一个疑问就是因为我要用GridView进行显示,我想用分组的方式显示。

那就3L的代码


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明linq分组,组排序,组内数据排序
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!