我試圖在將項目放入組合框之前對項目進行排序。繼承人我使用的代碼使用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