如何获得Linq to Entity的最大ID?

我有一个表用户有一个标识列UserID ,现在什么是正确的Linq实体行代码,将返回我最大的UserID

我试过了:

 using (MyDBEntities db = new MyDBEntities()) { var User = db.Users.Last(); // or var User = db.Users.Max(); return user.UserID; } 

但是LastMax似乎不被支持。

有任何想法吗?

尝试

 db.Users.OrderByDescending(u => u.UserId).FirstOrDefault() 

尝试这个

 int intIdt = db.Users.Max(u => u.UserId); 

更新:

如果没有logging,然后使用上面的代码生成exception尝试这个

 int? intIdt = db.Users.Max(u => (int?)u.UserId); 

NisaPrieto

 Users user = bd.Users.Where(u=> u.UserAge > 21).Max(u => u.UserID); 

将不起作用,因为MAX返回的字段是相同types的variables,所以在这种情况下是INT而不是用户对象。

 var max = db.Users.DefaultIfEmpty().Max(r => r == null ? 0 : r.ModelID); 

当db中没有logging时,它将返回0,没有例外。

如果您正在使用asyncawaitfunction,则会如下所示:

 User currentUser = await db.Users.OrderByDescending(u => u.UserId).FirstOrDefaultAsync(); 

获取您添加的实体的ID的最佳方式是这样的:

 public int InsertEntity(Entity factor) { Db.Entities.Add(factor); Db.SaveChanges(); var id = factor.id; return id; }