我有以下結構的XML文件: 可以在SQL做排名超過分區,如何在LINQ做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和起始日期列的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格式的數據,最好的我能想出根據ID,StartDate訂購數據。我仍然需要挖掘每個ID的最新兩個日期。
變種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"), };
使用採取(2)將只取箱頂部2行數據的,而不是頂部2%ID。
那麼,任何人都可以告訴我什麼是LINQ中上述SQL語句的等價物?我不想在C#中使用循環和條件語言來解析和管理XML,而且我對LINQ還很陌生(昨天已經閱讀並開始使用它),而且我還在閱讀文檔。
雖然我不瞭解整個代碼,但它確實有效。謝謝:) –
不客氣,我很樂意提供幫助。我添加了一些解釋和用查詢語法編寫的例子,也許它澄清了查詢中發生了什麼:) –