如何获得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; }
但是Last
和Max
似乎不被支持。
有任何想法吗?
尝试
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,没有例外。
如果您正在使用async
和await
function,则会如下所示:
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; }