我有一个要求,用户将从UI提供条件语句作为字符串,我必须将其合并到我的LINQ to XML查询中。 我将此站点称为动态linq查询但它只指定LINQ to SQL而不是LINQ to XML,这就是我需要的
https://weblogs.asp.net/scottgu/dynamic-linq-part-1-using-the-linq-dynamic-query-library
我尝试编辑它以符合我的要求,但它似乎不起作用。
string xml = @"
<Results>
<Result>
<Name>John</Name>
<Phone>110</Phone>
<Location>USA</Location>
</Result>
<Result>
<Name>Mary</Name>
<Phone>120</Phone>
<Location>UK</Location>
</Result>
<Result>
<Name>John</Name>
<Phone>130</Phone>
<Location>Canada</Location>
</Result>
</Results>
";
XElement results = XElement.Parse(xml);
var query = results.Elements("Result")
.AsQueryable().
.OrderBy("Element(XName.Get(\"Name\")).Value
ascending, Element(XName.Get(\"Phone\")).Value ascending");
foreach (var i in query)
{
Console.WriteLine(i);
}
当此代码运行时,我收到错误
System.Linq.Dynamic.ParseException' occurred in System.Linq.Dynamic.dll
Additional information: No property or field XName' exists in type 'XElement'
知道怎么解决这个问题吗?
答案 0 :(得分:0)
XElement results = XElement.Parse(xml);
var query = results.Elements("Result").AsQueryable().OrderBy(x=>x.Element("Name").Value).ThenBy(x=>x.Element("Phone").Value);
流利的语法和查询语法是不同的东西,不要混淆它们。