아마이 충분히 설명 할 수 없지만, 여기 간다 ... :LINQ 그룹화 : 키 대신 행을 선택 하시겠습니까? 나는이 유사한 테이블이 <p></p>
Id | Foreign_Key_Id | A_Number | Some_Other_Info
1 1 100 Red
2 1 200 Blue
3 1 300 Orange
4 2 100 Green
5 2 200 Yellow
6 3 100 Brown
내가 최대 싶어 "A_NUMBER" 이 테이블의 특정 "Foreign_Key_Id"에 대한 정보를 제공하지만 나머지 레코드도 반환하므로 "Some_Other_Info"열의 정보가 있습니다.
나는이 같은 쿼리를 통해이 작업을 수행 할 수 있습니다 발견했습니다 내가하는 기록을 아주 잘 모르겠습니다 만
from x in This_Table
group x by x.Foreign_Key_Id into g
let maxANumber = g.Max(x => x.A_Number)
orderby maxANumber descending
select g.Where(x => x.A_Number == maxANumber).First()
:
from x in This_Table
group x by x.Foreign_Key_Id into g
orderby g.Max(x => x.A_Number) descending
select g.Where (x => x.Foreign_Key_Id == g.Key).OrderByDescending (x => x.A_Number).First()
편집 : 가능성 또는이보다 간결 쿼리를 하나의 Foreign_Key_Id가 동일한 "A_Number"값을 가진 두 개의 레코드를 가지고 있다면 (이것은 내가 참조하는 테이블에서 가능하다. 가장 최근의 레코드를 취할 필요가있다). 내가 믿는 내 예
는 반환 :Id | Foreign_Key_Id | A_Number | Some_Other_Info
3 1 300 Orange
5 2 200 Yellow
6 3 100 Brown
그것이 내가 생각 해낸 것보다 더 빠른 쿼리 수 (쉬운 방식으로이 작업을 수행 할 수있는 방법이 있어야한다 보인다), 나는 단지 방법을 이해할 수 없다.
미리 감사드립니다.
감사합니다. 내 추한 솔루션보다 훨씬 간결합니다. – Ocelot20