【发布时间】:2020-01-09 15:38:51
【问题描述】:
我正在尝试将Dynamic LINQ Expressions 与LINQ to XML 一起使用,但动态参数有问题。
这是来自 Dynamic LINQ Wiki 的示例查询:
var query = db.Customers
.Where("City == @0 and Orders.Count >= @1", "London", 10)
.OrderBy("CompanyName")
.Select("new(CompanyName as Name, Phone)");
以我为例,我正在尝试查询以下结构:
<DataCenter>
<Server IP="1.2.3.4">
<OS>Windows</OS>
</Server>
<Server IP="5.6.7.8">
<OS>Linux</OS>
</Server>
</DataCenter>
我正在尝试像这样读取和解析它:
XElement XmlSource = XElement.Load(filePath)
var query = XmlSource.Elements().AsQueryable().Select("???????");
我应该把什么作为字符串参数?例如,如果我尝试检索所有服务器的 IP 和操作系统。当我尝试使用 XElement 的 Element( ) 或 Attribute( ) 方法时,我收到错误消息“XElement 没有这样的属性或方法”。
虽然firstAtteibute 和firstNode 似乎可用。像这样的工作:
var query = XmlSource.Elements()
.AsQueryable()
.Select("new (FirstAttribute.Value as IP, FirstNode.toString() as OS)");
【问题讨论】:
-
感谢您的反对票和近距离投票。你真好。
-
你想访问什么?这里不需要
AsQueryable。 -
@DanielA.White 据我所知,建立在 IQueryable 之上的动态 LINQ 表达式。我正在尝试对用户提供的任意字段运行查询。我添加了来自 Dynamic LINQ Wiki 的示例。
-
@DanielA.White 下面由 NetMage 给出的答案正是我要问的。抱歉不清楚。
标签: c# linq linq-to-xml dynamic-linq