Я пытаюсь отсортировать предметы, прежде чем они будут помещены в список.Вот код, который я использую
public void InitializeDropDown(string XmlFile, string xpath)
{
XmlDocument doc = new XmlDocument();
doc.Load(XmlFile);
XPathNavigator navigator = doc.CreateNavigator();
XPathExpression expression = navigator.Compile(xpath);
expression.AddSort("name", XmlSortOrder.Descending,
XmlCaseOrder.UpperFirst,
string.Empty, XmlDataType.Text);
XPathNodeIterator iterator = navigator.Select(expression);
foreach (XPathNavigator item in iterator)
{
WeatherServicesCBO.Items.Add(item.Value);
}
}
Я думал, что это будет правильный способ сортировки XML-данных, что мне не хватает?
РЕДАКТИРОВАТЬ : Вотнекоторые другие методы, которые я пробовал до сих пор, не приводят к ошибке.
Первая попытка (без сортировки)
public void InitializeDropDown(string XmlFile, string xpath)
{
var doc = new XmlDocument();
doc.Load(XmlFile);
XPathNavigator navigator = doc.CreateNavigator();
XPathExpression expression = navigator.Compile(xpath);
expression.AddSort("@name", XmlSortOrder.Descending,
XmlCaseOrder.UpperFirst,
string.Empty, XmlDataType.Text);
XPathNodeIterator iterator = navigator.Select(expression);
foreach (XPathNavigator item in iterator)
{
WeatherServicesCBO.Items.Add(item.Value);
}
}
Вторая попытка (выдает ошибку Неуниверсальный тип 'System.Collections.IEnumerable' нельзя использовать с аргументами типа )
public void InitializeDropDown(string XmlFile, string xpath)
{
string[] services = { "Google Weather", "Yahoo! Weather", "NOAA", "WeatherBug" };
IEnumerable<string> query = from service in services
orderby service.Substring(0, 1) ascending
select service;
foreach (string @string in query)
WeatherServicesCBO.Items.Add(@string);
}
Третья попытка (получить исключение NullReferenceException)
public void InitializeDropDown(string XmlFile, string xpath)
{
var doc = XDocument.Load(XmlFile);
foreach (var item in doc.XPathSelectElements(xpath).OrderByDescending(n => n.Attribute("name").Value))
WeatherServicesCBO.Items.Add(item);
}