3

我正在尝试为用户选择 MAX LevelId 值,然后将该值分配给变量。

在普通 SQL 中,等价于:

SELECT        MAX(LevelID) AS MaxLevel
FROM            Character
WHERE        (UserId = 'John')


//Check User existing Characters max level per user

int 用户级别 ID = 0;

var userQuery = (from o in db.Characters
where o.UserId == UserID
      select o);

UserLevelID = userQuery.Max(LevelID);

问题就在这里。我不知道如何提取levelID的最大值

4

3 回答 3

9

您可以在一个查询中完成所有操作:

var userLevelId = db.Characters.Where(o => o.UserID == UserID)
                               .Max(o => o.LevelID);

我已将其从查询表达式更改为不再是查询表达式,因为这引入了更多麻烦-在它们实际上有助于提高可读性的地方使用查询表达式,而扩展方法则需要更易读的简单解决方案。

于 2012-07-06T16:13:57.587 回答
4

怎么样:

var theLevel = db.Characters.Where(z => z.UserId == UserID).Max(z => z.LevelID);
于 2012-07-06T16:15:08.283 回答
0

var max = db.Characters.Where(o => o.UserID == UserID).Max(o => o == null ? 0 : o.LevelID);

当 db 中没有记录时,它会毫无例外地返回 0。

于 2015-05-15T11:12:23.270 回答