本文介绍了LINQ to SQL:GroupBy() 和 Max() 以获取具有最新日期的对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
考虑一个用于存储审计事件的 SQL Server 表.
Consider a SQL Server table that's used to store events for auditing.
需要只获取每个 CustID 的最新条目.我们想要获取整个对象/行.我假设查询中将需要 GroupBy().这是到目前为止的查询:
The need is to get only that latest entry for each CustID. We want to get the entire object/row. I am assuming that a GroupBy() will be needed in the query. Here's the query so far:
var custsLastAccess = db.CustAccesses
.Where(c.AccessReason.Length>0)
.GroupBy(c => c.CustID)
// .Select()
.ToList();
// (?) where to put the c.Max(cu=>cu.AccessDate)
问题:如何创建查询以选择每个 CustID
的最新(最大 AccessDate
)记录/对象?
Question:How can I create the query to select the latest(the maximum AccessDate
) record/object for each CustID
?
推荐答案
我想知道是否是这样的:
I'm wondering if something like:
var custsLastAccess = db.CustAccesses
.Where(c.AccessReason.Length>0)
.GroupBy(c => c.CustID)
.Select(grp => new {
grp.Key,
LastAccess = grp
.OrderByDescending(x => x.AccessDate)
.Select(x => x.AccessDate)
.FirstOrDefault()
}).ToList();
你也可以试试 OrderBy()
和 Last()
这篇关于LINQ to SQL:GroupBy() 和 Max() 以获取具有最新日期的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!