Linq Sorted Groupby和Orderby字段

时间:2013-05-21 21:09:59

标签: c# asp.net linq

我觉得我只是在答案的边缘!

我有一个自定义fileInfo课程,其中包含“报告商店编号”,“报告日期”等所有者信息......

我有List<fileInfo>我保存所有文件信息。我试图通过“报告商店编号”对列表进行分组,并按“报告日期”排序

我想出了以下内容

var results = ownedFileInfo.GroupBy(x => x.reportStore).Select(group=> new { KeyName = group.Key, KeyInfo =  group.OrderBy(x=>x.reportDate).ThenBy(x=>x.reportStore)});

List<fileInfo> sortedFiles = new List<fileInfo>();
                    foreach (var group in results)
                    {

                        foreach (fileInfo fi in group.KeyInfo)
                        {
                            sortedFiles.Add(fi);

                        }
                    }

groupby和orderby功能正在按预期工作。虽然我希望ThenBy也会对groupby列进行排序:(

结果:

  • 商店#.....日期
  • 991 ........ 13年10月16日
  • 991 ........ 13年10月17日
  • 994 ........ 13年10月16日
  • 994 ........ 13年10月17日
  • 992 ........ 13年10月16日
  • 992 ........ 13年10月17日

预期结果:

  • 商店#.....日期
  • 991 ........ 13年10月16日
  • 991 ........ 13年10月17日
  • 992 ........ 13年10月16日
  • 992 ........ 13年10月17日
  • 994 ........ 13年10月16日
  • 994 ........ 13年10月17日

对于linq的更多经验,请指出我错过了什么或出了什么问题?谢谢你提前了。

2 个答案:

答案 0 :(得分:2)

我认为你输出的输出根本不需要分组:

var sortedFiles = ownedFileInfo.OrderBy(x => x.reportStore)
                               .ThenBy(x => x.reportDate)
                               .ToList();

答案 1 :(得分:1)

我认为你需要的是

ownedFileInfo.GroupBy(x => x.reportStore).OrderBy(x=>x.Key).Select....

而不是

ownedFileInfo.GroupBy(x => x.reportStore).Select....