스택 오버플로를 검색했지만 최대 ID에 대한 예제 만 찾았습니다. 특정 조건에 대한 최대 ID를 찾고 싶습니다. 이 같은 것을LINQ, "where"조건으로 최대 ID를 얻는 방법
var nRow = from p in ctx.FormControls
. where p.FormObjectsId == FormID
. select Max(p.Id);
어떻게 할 수 있습니까?
스택 오버플로를 검색했지만 최대 ID에 대한 예제 만 찾았습니다. 특정 조건에 대한 최대 ID를 찾고 싶습니다. 이 같은 것을LINQ, "where"조건으로 최대 ID를 얻는 방법
var nRow = from p in ctx.FormControls
. where p.FormObjectsId == FormID
. select Max(p.Id);
어떻게 할 수 있습니까?
당신은 그렇게 할 수있는 곳의 경우에도 최대 :
var max = ctx.FormControls.Where(r => r.FormObjectsID == FormID)
.Max(r => r.Id);
하여 쿼리 식으로 당신이 할 수 있습니다 :
var nRow = (from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.Id).Max();
something.Where(t => t.something> 0).Max(w => w.other);
또는
그냥 순서를 ID 내림차순으로, 자연히 당신에게 최대 ID를줍니다.
var nRow = (from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.ID).OrderByDescending(x => x.p.ID);
쿼리 구문 : 당신이 정말로 쿼리 표현처럼, 사용 후 Max
확장 메서드를 "필터 및 프로젝션"을 표현하고 할 수 있는지 잘
var nRow = (from p in ctx.FormControls where p.FormObjectsId == FormID select p.Id).Max();
:
var query = from p in ctx.FormControls
where p.FormObjectsId == FormID
select p.ID;
var maxID = query.Max();
당신 원하는 경우 중간 변수없이이 작업을 수행 할 수 있지만 대괄호 등을 넣어야 할 때 쿼리식이 추악 해집니다.
저는 개인적으로 프로젝션 인라인을 지정할 수있는 Max
의 오버로드를 사용합니다 ... 그 시점에서 쿼리 식을 사용하면 아무런 이점이 없습니다. 확장 메서드와 람다 식을 모두 사용하십시오.
var maxID = ctx.FormControls
.Where(p => p.FormObjectsId == FormID)
.Max(p => p.ID);
이 모든 (즉시 실행을 사용하는)을 Max
호출 할 때까지 지연된 실행을 사용하는 것을 잊지 마세요 - 그래서 예를 들어,이 경우 SQL 또는 엔티티 프레임 워크, 전체 쿼리에 LINQ에 대해 실행 SQL로 변환됩니다.