我想圍繞使用LINQ作爲使用XML數據的一種手段來繞過我的大腦,並且我有一個問題找出將元素選入強類型集合的最佳方法。我敢肯定,我錯過了一些細節,但我似乎無法看到它。如何使用LINQ將XML元素選擇到強類型集合中?
這裏是我的XML文件的樣本:
<users>
<User>
<UserId>a3ba555e-9dbe-4f5e-a8b0-56be91a99eae</UserId>
<Password>FCC2427123934BC2A06297847574A50E</Password>
<Username>TestTEst</Username>
<FirstName>Test</FirstName>
<LastName>TestTEst</LastName>
</User>
<User>
<UserId>500629d5-c22a-4585-bc85-330391f44fac</UserId>
<Password>FCC2427123934BC2A06297847574A50E</Password>
<Username>TestTEst</Username>
<FirstName>Test</FirstName>
<LastName>TestTEst</LastName>
</User>
<User>
<UserId>bd6b78db-9cd7-403b-a757-a8c013bdc523</UserId>
<Password>FCC2427123934BC2A06297847574A50E</Password>
<Username>TestTEst</Username>
<FirstName>Test</FirstName>
<LastName>TestTEst</LastName>
</User>
</users>
當我創建使用下面的代碼的對象:
Dim userList = From u In users.Descendants("user") _
Select u
然後用戶列表將包含我的XML文件中的元素。如果我嘗試將XML文件選擇爲強類型集合,請改爲:
Dim userList = (From u In users.Descendants("user") _
Select New User With { _
.UserId = New Guid(u.Attribute("UserId").Value), _
.Username = u.Attribute("Username").Value, _
.Password = u.Attribute("Password").Value, _
.FirstName = u.Attribute("FirstName").Value, _
.LastName = u.Attribute("LastName").Value _
}).ToList()
然後,userList爲空。無論我是否明確指定了userList(List(Of User))的類型,這都是一樣的。我究竟做錯了什麼?直接從XML創建強類型集合的正確方法是什麼?
感謝,
邁克
我很驚訝,這可以工作。 XML區分大小寫。它應該是'.Descendants(「User」)'。 – 2010-05-24 20:42:00
就這樣,這是問題:)。它正在尋找用戶而不是用戶。只要我將其更改爲「用戶」(使用Descendants屬性),它就很好。 – mclark1129 2010-05-24 20:54:18