我正在尝试为用户选择MAX LevelId值,然后将该值分配给变量。
在普通SQL中,等价物是:
SELECT MAX(LevelID) AS MaxLevel
FROM Character
WHERE (UserId = 'John')
//Check User existing Characters max level per user
int UserLevelID = 0;
var userQuery = (from o in db.Characters
where o.UserId == UserID
select o);
UserLevelID = userQuery.Max(LevelID);
这就是问题所在。我不知道如何提取levelID的最大值
答案 0 :(得分:8)
您可以在一个查询中完成所有操作:
var userLevelId = db.Characters.Where(o => o.UserID == UserID)
.Max(o => o.LevelID);
我已经将它从一个查询表达式中改变了,因为它引入了更多残酷的使用查询表达式,它们实际上有助于提高可读性,而扩展方法则调用简单的解决方案,它们更具可读性。
答案 1 :(得分:3)
怎么样:
var theLevel = db.Characters.Where(z => z.UserId == UserID).Max(z => z.LevelID);
答案 2 :(得分:0)
var max = db.Characters.Where(o => o.UserID == UserID).Max(o => o == null?0:o.LevelID);
当db中没有记录时,它将返回0,没有异常。