使用NHibernate LINQ查找最后保存的id

本文关键字:保存 id 最后 查找 NHibernate LINQ 使用 | 更新日期: 2023-09-27 18:18:03

目前我使用以下代码

 var lastId = DataRepository.All().ToList().LastOrDefault().Id;

查找最后插入的行Id

我如何重构上面的代码而不投射到ToList() ?

DataRepository.All()返回IQuerable<T>

使用NHibernate LINQ查找最后保存的id

就像HashPsi注释一样简单。

如果您的DataRepository.All()返回IQuerable<T> -所有这些类型的查询将导致一个简单的SQL语句只返回最后一个Id:

// query
IQueryable<T> query = DataRepository.All();
// just MAX
var maxIdA = query
   .Max(x => x.Id);
// also this kind of construct with Take() and SingleOrDefault()
// will be effective (not loading complete list from DB to app)
// and could be used for more complex queries with unique result
var maxIdB = query
      .OrderByDescending(x => x.Id)
      .Select(x => x.Id)
      .Take(1)
      .SingleOrDefault();