我试图在将项目放入组合框之前对项目进行排序。继承人我使用的代码使用C#排序来自XML文件的数据:不排序
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);
}
为什么你不包括你的XML数据样本? – 2011-06-17 18:53:35