使用LINQ to SQL获取最后一个元素

15

我有这个:

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

基本上,我正在使用Linq-to-Sql,但它不支持.Last运算符。我可以检索用户的所有记录,然后使用对象的linq来获取我的值,但我想知道如何在Linq-to-Sql中做到这一点并仅返回一条记录。

感谢您的建议。


2
如果你正在寻找“最近的更新”,你可以使用linq .Max运算符吗?这可能比对整个记录集进行排序更快。请参阅http://msdn.microsoft.com/en-us/library/bb386972.aspx - Rob
@Rob,order by子句不会导致“对整个记录集进行排序”。它仍然是惰性评估的,因此获取order by的第一行的成本不会超过max - Kirk Woll
@KirkWoll - 有趣的是,我不知道那个。 - Rob
2个回答

39
只需按降序排序并使用.First()即可:
var result = (from t in MyDC  
          where t.UserID == 6
          orderby t.UpdateTime descending
          select t.ID).First();

2
如果您不知道按什么排序,也可以使用 .Skip() 和 .Take() 来减少返回的行数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接