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);
此解决方案看起来也可行,因此我向您投了一票!谢谢,好先生