У меня есть требование, согласно которому пользователи будут предоставлять условные операторы в виде строки из пользовательского интерфейса, которую я должен включить в свои запросы 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'
Есть идеи, как это исправить?