以获取具有最新日期的对象

以获取具有最新日期的对象

本文介绍了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() 以获取具有最新日期的对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-01 03:24