【发布时间】:2015-06-19 09:05:28
【问题描述】:
考虑到以下 XML 数据存储在 xmlData.xml 文件中,我尝试使用 LinqPad 使用 lambda 语法对其进行查询。
我记得以前用过这个,但想不通了。我可以像在 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”不包含“UserName”的定义,并且找不到接受“System.Xml.Linq.XElement”类型的第一个参数的扩展方法“UserName”(按 F4 到添加 using 指令或程序集引用)
再一次,我记得以前有一个很好的简洁语法,但我无法弄清楚它到底是怎么回事。 谢谢!
【问题讨论】:
标签: c# xml linq lambda linqpad