2011-06-07 52 views
13

我有这样的:得到最后一个元素与LINQ to SQL的

var result = (from t in MyDC 
       where t.UserID == 6 
       orderby t.UpdateTime 
       select t.ID).Last(); 

基本上,我使用LINQ到SQL,它不支持。去年运营商。我可以检索用户的所有记录,然后使用linq到对象来获得我的价值,但我想知道如何用linq-to-sql做到这一点,并只返回一条记录。

感谢您的建议。由降和使用.First()代替

+2

如果您正在寻找“最新的更新”,您可以使用linq .Max运算符吗?可能比订购整套记录要快。请参阅http://msdn.microsoft.com/en-us/library/bb386972.aspx – Rob 2011-06-07 20:38:32

+0

@Rob,order by子句不会导致“排序整个记录集”。它仍然被懒惰地评估,使得订单的第一行成本不会超过'max'。 – 2013-10-10 23:26:50

+0

@KirkWoll - 有趣 - 我不知道。 – Rob 2013-10-15 10:52:43

回答

34

只是为了:

var result = (from t in MyDC 
      where t.UserID == 6 
      orderby t.UpdateTime descending 
      select t.ID).First(); 
2

如果你不知道你被排序,你也可以使用.Skip()和。取(),以减少行数正在返回