LINQ中的最大日期记录

Sal*_*ian 25 .net c# linq sql-server max

我在MS Sql Server中有这个名为sample的表,其中包含以下值:

 ID    Date    Description
1    2012/01/02 5:12:43    Desc1
2    2012/01/02 5:12:48    Desc2
3    2012/01/03 5:12:41    Desc3
4    2012/01/03 5:12:43    Desc4
Run Code Online (Sandbox Code Playgroud)

现在我想写LINQ查询,结果将是这样的:

4    2012/01/03 5:12:43    Desc4
Run Code Online (Sandbox Code Playgroud)

我写了这个,但它不起作用:

List<Sample> q = (from n in  Sample.Max(T=>T.Date)).ToList();
Run Code Online (Sandbox Code Playgroud)

Kir*_*huk 56

使用:

var result = Sample.OrderByDescending(t => t.Date).First();
Run Code Online (Sandbox Code Playgroud)


Bro*_*ass 23

要按Sample日期获取最大值不必排序(这不是真正需要获得最大值):

var maxSample  = Samples.Where(s => s.Date == Samples.Max(x => x.Date))
                        .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

  • 这对我来说看起来是“O(n^2)”。每次迭代 where 子句时都会重新计算最大值。 (10认同)
  • @knocte不是它的复杂性不一样 - 这是O(n) - 需要2次传递,每次O(n) - 排序都是O(n log n)所以更贵 (2认同)

小智 6

var lastInstDate = model.Max(i=>i.ScheduleDate);
Run Code Online (Sandbox Code Playgroud)

我们可以像这样从模型中获取最大日期。

  • @FrankCastle616 它实际上并没有回答这个问题。这将返回一个日期,而不是包含该日期的记录 (5认同)
  • 不知道为什么这没有得到更多投票。迄今为止最简单、最有效的 (2认同)