NHibernate에서 반환 된 IQueryable에 LINQ를 사용하고 있으며 두 필드에서 최대 값을 가진 행을 선택해야합니다.
내가 고수하는 부분을 단순화했습니다. 한 필드에서 최대 값을 사용하여 테이블에서 한 행을 선택해야합니다.
var table = new Table { new Row(id: 1, status: 10), new Row(id: 2, status: 20) }
from u in table
group u by 1 into g
where u.Status == g.Max(u => u.Status)
select u
이것은 부정확하지만 올바른 형식을 찾을 수 없습니다.
BTW, 내가 실제로 달성하려는 것은 대략 다음과 같습니다.
var clientAddress = this.repository.GetAll()
.GroupBy(a => a)
.SelectMany(
g =>
g.Where(
a =>
a.Reference == clientReference &&
a.Status == ClientStatus.Live &&
a.AddressReference == g.Max(x => x.AddressReference) &&
a.StartDate == g.Max(x => x.StartDate)))
.SingleOrDefault();
위의 람다로 시작했지만 LINQPad를 사용하여 Max ()를 선택하는 구문을 시도하고 해결했습니다.
최신 정보
GroupBy 제거가 핵심이었습니다.
var all = this.repository.GetAll();
var address = all
.Where(
a =>
a.Reference == clientReference &&
a.Status == ClientStatus.Live &&
a.StartDate == all.Max(x => x.StartDate) &&
a.AddressReference == all.Max(x => x.AddressReference))
.SingleOrDefault();
중복 가능성 : stackoverflow.com/questions/1101841/…
—
M.Babcock 2012
@ M.Babcock 아주 멀리 아래 질문에 좋은 답변이 있었다 : stackoverflow.com/a/6330485/444244
—
Boggin
그것보다 훨씬 더 나은 것들이 있습니다 ...
—
M.Babcock 2012
한 번 봐 가지고 답을 .
—
Sergey Brunov 2012