사용자에 대해 MAX LevelId 값을 선택한 다음 해당 값을 변수에 할당하려고합니다.엔티티에 linq의 최대 값을 선택하십시오.
일반 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);
여기에 문제가 있습니다. 내가 쿼리 식을 인에서 멀리 변경했습니다
var userLevelId = db.Characters.Where(o => o.UserID == UserID)
.Max(o => o.LevelID);
이 더 cruft에 도입했기 때문에 : 나는 당신이 한 쿼리에서 모든 것을 할 수 있습니다 levelID
어떻게 값을 UserLevelID (변수)에 할당합니까? 그것은 단지 UserLevelID = userQuery입니까 – MataHari
이 쿼리의 문제점은 집계 함수가 비어 있지 않은 시퀀스가 필요하다는 것입니다. 그리고 Where 확장 메서드가 비어 있지 않은 시퀀스를 반환한다는 보장이 없으므로 이전 문장이 작동하지 않습니다. 실행. LinQToEntities는이 목적에 매우 유용한 "DefaultIfEmpty"확장 메서드를 제공합니다 : Where (...). DefaultIfEmpty (...) Max (...) – Luis
@Luis : 원하는 동작이면 yes입니다. 실제로 아무런 결과가없는 경우 OP가 실제로 원하는 것이 명확하지 않습니다. (그들은이 해답으로 충분히 행복해 보인다 ...) –