1

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

我有一个自定义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........2013 年 10 月 16 日
  • 991........2013 年 10 月 17 日
  • 994........10/16/13
  • 994........10/17/13
  • 992........2013 年 10 月 16 日
  • 992........2013 年 10 月 17 日

预期成绩:

  • 店铺#.....日期
  • 991........2013 年 10 月 16 日
  • 991........2013 年 10 月 17 日
  • 992........2013 年 10 月 16 日
  • 992........2013 年 10 月 17 日
  • 994........10/16/13
  • 994........10/17/13

linq 的更多经验之一能否指出我遗漏了什么或出了什么问题?提前感谢您的宝贵时间。

4

2 回答 2

2

我认为对于该输出,您根本不需要分组:

var sortedFiles = ownedFileInfo.OrderBy(x => x.reportStore)
                               .ThenBy(x => x.reportDate)
                               .ToList();
于 2013-05-21T21:17:32.533 回答
1

我想你需要的是

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

代替

ownedFileInfo.GroupBy(x => x.reportStore).Select....
于 2013-05-21T21:15:13.807 回答