에 LINQ에서 수행하는 방법 : 는 SQL에 파티션을 통해 순위를 할 수있다, 나는 다음과 같은 구조를 갖는 XML 파일이 XML
<Entities> <Request> <ID> A1 </ID> <!-- Can be multiple records with same values --> <Finance> <StartDate> Some Date </StartDate> <!-- Unique per ID --> </Finance> <Request> <Request> ... </Request> </Entities>
같은 ID를 가진하지만 여러 요청이있을 수 있습니다 이러한 경우 StartDate는 요청마다 달라야합니다.
ID 당 최신 두 날짜를 추출해야합니다. 이 ID 및 startDate를 열 SQL 테이블이 있다면
, 나는 잘 작동 다음 쿼리를 사용하십시오 :
SELECT ID, StartDate
FROM (SELECT ID, StartDate, RANK()
OVER (PARTITION BY ID ORDER BY StartDate DESC) rank
FROM Request)
WHERE rank IN ('1','2')
을하지만 XML 형식의 데이터를 가지고 최고의 내가 올 수 with ID, StartDate에 따라 데이터를 정렬했습니다. 나는 아직도 모든 ID에 대해 최신 날짜 두 개를 추출해야합니다. (2) 단지 나에게 데이터의 상위 2 라인을 가져올 것 테이크를 사용
var에 cafrequests =
from request in xdoc.Descendants("Request") orderby (int)request.Element("ID"), (DateTime)request.Element("Finance").Element("StartDate") ascending select new { ID = request.Element("ID"), StartDate = request.Element("Finance").Element("StartDate"), };
는, ID 당 2 위로하지.
그래서 누구든지 LINQ에서 위의 SQL 문과 동일하다고 말할 수 있습니까? 저는 C#에서 루프와 조건문을 사용하여 XML을 구문 분석하고 관리하고 싶지 않습니다. LINQ (어제 읽었고 사용하기 시작한)에 대해 상당히 익숙합니다. 문서를 계속 읽으려고합니다.
이 코드 전체를 이해할 수는 없지만 작동합니다.감사합니다 :) –
당신을 환영합니다, 기쁘게 도와 줘. 내가 몇 가지 설명과 쿼리 구문으로 작성된 예제를 추가, 어쩌면 그것은 쿼리에 무슨 일이 일어나고 있는지 명확히 :) –