Linq如何取出某一字段值最大的记录?

时间:2021-12-07 09:01:20
表A,有字段ID,Rank,Type,CreateTime
现在要用Linq查询出A中最新的[时间为最大的],Rank值最大的一条记录?要返回model对象

6 个解决方案

#1



var query=db.表A.Max(a=>a.CreateTime).Max(a=>a.Rank).ToList();
List<modelA >list=new List<modelA >();
foreach(var q in query)
{
  modelA a=new modelA();
  a.Id=q.ID
  ...
   list.Add(a);
}
return list;

#2


var q = db.A.Max(p => p.CreateTime).ToList();
http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx

#3


引用 2 楼 wuyq11 的回复:
var q = db.A.Max(p => p.CreateTime).ToList();
http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx


  正解

#4


你到底是要最新的 还是要RANK最大的 明显有冲突

#5


引用 4 楼 liupeng_bl 的回复:
你到底是要最新的 还是要RANK最大的 明显有冲突

?
哪里有冲突?
比如说有下面几条记录
ID,Rank,Type,CreateTime
1001  34   2   20100804
1001  12   2   20100805
1001  67   2   20100805
1001  2    2   20100804
1001  120  2   20100805
1001  304  2   20100802
现有先取出最大的CreateTime,为20100805;然后再取出日期为20100805的Rank值最大的记录,为120,我需要的就是标记为红线的记录。用一条Linq语句怎么实现?

#6


先根据时间排序,再取rank最大的。

#1



var query=db.表A.Max(a=>a.CreateTime).Max(a=>a.Rank).ToList();
List<modelA >list=new List<modelA >();
foreach(var q in query)
{
  modelA a=new modelA();
  a.Id=q.ID
  ...
   list.Add(a);
}
return list;

#2


var q = db.A.Max(p => p.CreateTime).ToList();
http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx

#3


引用 2 楼 wuyq11 的回复:
var q = db.A.Max(p => p.CreateTime).ToList();
http://msdn.microsoft.com/en-us/vbasic/bb688086.aspx


  正解

#4


你到底是要最新的 还是要RANK最大的 明显有冲突

#5


引用 4 楼 liupeng_bl 的回复:
你到底是要最新的 还是要RANK最大的 明显有冲突

?
哪里有冲突?
比如说有下面几条记录
ID,Rank,Type,CreateTime
1001  34   2   20100804
1001  12   2   20100805
1001  67   2   20100805
1001  2    2   20100804
1001  120  2   20100805
1001  304  2   20100802
现有先取出最大的CreateTime,为20100805;然后再取出日期为20100805的Rank值最大的记录,为120,我需要的就是标记为红线的记录。用一条Linq语句怎么实现?

#6


先根据时间排序,再取rank最大的。