C# Linq排序的Groupby和Orderby字段

C# Linq排序的Groupby和Orderby字段,c#,asp.net,linq,C#,Asp.net,Linq,我觉得我正处在回答的边缘 我有一个自定义的fileInfo类,其中包含持有人信息,如“报告门店号”、“报告日期”等 我有一个列表,其中保存了所有文件信息。我已尝试按“报告门店编号”对列表进行分组,并按“报告日期”对订单进行分组 我得出了以下结论 var results = ownedFileInfo.GroupBy(x => x.reportStore).Select(group=> new { KeyName = group.Key, KeyInfo = group.OrderB

我觉得我正处在回答的边缘

我有一个自定义的
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);

                        }
                    }
var results=ownedFileInfo.GroupBy(x=>x.reportStore)。选择(group=>new{KeyName=group.Key,KeyInfo=group.OrderBy(x=>x.reportDate)。然后选择(x=>x.reportStore)});
List sortedFiles=新列表();
foreach(结果中的var组)
{
foreach(fileInfo-fi在group.KeyInfo中)
{
分类文件。添加(fi);
}
}
groupby和orderby功能按预期工作。虽然我希望ThenBy也能对groupby列进行排序:(

结果:

  • 商店#……日期
  • 991…….2013年10月16日
  • 991…….2013年10月17日
  • 994…….2013年10月16日
  • 994…….2013年10月17日
  • 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…….2013年10月16日
  • 994…….2013年10月17日

请让我有更多的linq经验,能指出我遗漏了什么或出了什么问题吗?感谢您在advanced中抽出时间。

我想您需要的是

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

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

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

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

您的两个示例都显示缺少按日期排序的功能,我是否遗漏了什么?我不擅长qith linq,但我认为您没有对
KeyName=group进行排序。Key
尝试使用
results对最终结果进行排序。OrderBy(grp=>grp.KeyName);
此解决方案看起来也可行,因此我向您投了一票!谢谢,好先生