Linq排序分组和顺序字段

本文关键字:顺序 字段 排序 Linq | 更新日期: 2023-09-27 18:14:37

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

我有一个自定义的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和order功能按预期工作。虽然我希望ThenBy也会对groupby列进行排序:(

结果:

    <
  • 商店#…日期/gh>991……10/16/13
  • 991……10/17/13
  • 994……10/16/13
  • 994……10/17/13
  • 992……10/16/13
  • 992……10/17/13

预期结果:

    <
  • 商店#…日期/gh>991……10/16/13
  • 991……10/17/13
  • 992……10/16/13
  • 992……10/17/13
  • 994……10/16/13
  • 994……10/17/13

能有一个更有经验的linq请指出我错过了什么或哪里出了问题?提前感谢您的宝贵时间。

Linq排序分组和顺序字段

我认为您根本不需要对输出进行分组:

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

我认为你需要的是

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

代替

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