考慮到存儲在文件xmlData.xml中的以下XML數據,我試圖使用LinqPad使用lambda語法對其進行查詢。使用lambda語法在LinqPad中查詢XML源
我記得以前用過這個,但是不能再弄明白。我可以使用屬性查詢數據,就像我在Visual Studio中查詢對象一樣。
<?xml version="1.0"?>
<ArrayOfHROps_User xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<HROps_User>
<EntityKey>
<EntitySetName>HROps_User</EntitySetName>
<EntityContainerName>HROperationsEntities</EntityContainerName>
<EntityKeyValues>
<EntityKeyMember>
<Key>UserID</Key>
<Value xsi:type="xsd:int">44405</Value>
</EntityKeyMember>
</EntityKeyValues>
</EntityKey>
<UserID>44405</UserID>
<EmployeeID>AAA40</EmployeeID>
<Period>2015-06-17T00:00:00</Period>
<Active>true</Active>
<Options>false</Options>
<Pager>false</Pager>
<Contractor>false</Contractor>
<TimeStamp>2015-06-18T13:37:38.3</TimeStamp>
<UserName>Mark.Walsh</UserName>
</HROps_User>
<HROps_User>
<EntityKey>
<EntitySetName>HROps_User</EntitySetName>
<EntityContainerName>HROperationsEntities</EntityContainerName>
<EntityKeyValues>
<EntityKeyMember>
<Key>UserID</Key>
<Value xsi:type="xsd:int">44406</Value>
</EntityKeyMember>
</EntityKeyValues>
</EntityKey>
<UserID>44406</UserID>
<EmployeeID>AAA60</EmployeeID>
<Period>2015-06-17T00:00:00</Period>
<Active>true</Active>
<Options>false</Options>
<Pager>false</Pager>
<Contractor>false</Contractor>
<TimeStamp>2015-06-18T13:37:38.94</TimeStamp>
<UserName>Mark.Walsh</UserName>
</HROps_User>
在LinqPad - 這些語句加載數據並正確輸出它:
var myxml = XElement.Load (@"c:\temp\xmlData.xml");
myxml.Elements().Dump();
我希望以下工作過:
myxml.Elements().FirstOrDefault(x=>x.UserName == "Mark.Walsh").Dump();
,但它給了我錯誤:
'System.Xml.Linq.XElement' does not contain a definition for 'UserName' and no extension method 'UserName' accepting a first argument of type 'System.Xml.Linq.XElement' could be found (press F4 to add a using directive or assembly reference)
再次,我記得之前有一個很好的乾淨的語法,但我無法弄清楚它到底是怎麼回事。 謝謝!