Ket*_*hup 18 .net c# linq entity-framework
我有一个表有以下3列,ID,ShortCode,UploadDate.
我想使用LINQ通过shortcode对结果进行分组(并保留所有结果),然后对这些组进行排序并返回一个列表.
我有以下内容:
rawData.Provider.CreateQuery<PDFDocument>(qb.rootExperession)
.ToList<PDFDocument>().
GroupBy(b=>b.ShortCode)
.SelectMany(b=>b).ToList<PDFDocument>()
Run Code Online (Sandbox Code Playgroud)
我想返回所有结果,按ShortCode分组,每个组中的项目按UploadDate排序,组排序,以便首先包含最新文档.
有谁知道这是否可能?
Raw*_*ing 40
尝试
rawData.Provider.CreateQuery<PDFDocument>(qb.rootExperession)
.AsEnumerable()
.OrderByDescending(d => d.UploadDate)
.GroupBy(d => d.ShortCode)
.SelectMany(g => g)
.ToList();
Run Code Online (Sandbox Code Playgroud)
这应该
如果性能是一个问题,那么你可以做得更好
rawData.Provider.CreateQuery<PDFDocument>(qb.rootExperession)
.AsEnumerable()
.GroupBy(d => d.ShortCode)
.Select(g => g.OrderByDescending(d => d.UploadDate))
.OrderByDescending(e => e.First().UploadDate)
.SelectMany(e => e)
.ToList();
Run Code Online (Sandbox Code Playgroud)
它分别对每个组的内容进行排序,而不是先对所有内容进行排序,然后再进行分组.
实际上,您不希望按短代码分组,您希望按它们排序.所以以下查询应该做的伎俩:
rawData.Provider.CreateQuery<PDFDocument>(qb.rootExperession)
.ToList()
.OrderBy(b => b.ShortCode)
.ThenBy(b => b.UploadDate)
.ToList()
Run Code Online (Sandbox Code Playgroud)
编辑 如果您真的想使用GroupBy,可以这样做:
rawData.Provider.CreateQuery<PDFDocument>(qb.rootExperession)
.ToList()
.GroupBy(b => b.ShortCode)
.SelectMany(grouping => grouping.OrderBy(b => b.UploadDate))
.ToList()
Run Code Online (Sandbox Code Playgroud)
但我劝阻它.如果你不想要团体,那就没有必要创建团体了!
第二次编辑
我没有让你想要UpdateTime订购的团体.它使查询复杂化了一些:
rawData.Provider.CreateQuery<PDFDocument>(qb.rootExperession)
.ToList()
.GroupBy(b => b.ShortCode)
.Select(grouping => grouping.OrderByDescending(b => b.UploadDate))
.OrderByDescending(grouping => grouping.First().UploadDate)
.SelectMany(grouping => grouping)
.ToList()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
50976 次 |
最近记录: |