C# ASP.NET MVC中LINQ使用的XML排序
我正在尝试对xml文件中的某些列进行排序。这是我的C# ASP.NET MVC中LINQ使用的XML排序,c#,xml,linq,view,controller,C#,Xml,Linq,View,Controller,我正在尝试对xml文件中的某些列进行排序。这是我的 public ActionResult Index(string sortOrder) { IEnumerable<Personal> personals; XmlDocument doc = new XmlDocument(); List<Personal> persons = new List<Personal>(); doc
public ActionResult Index(string sortOrder)
{
IEnumerable<Personal> personals;
XmlDocument doc = new XmlDocument();
List<Personal> persons = new List<Personal>();
doc.Load("C:\\Users\\Matt.Dodson\\Desktop\\SampleWork\\PersonsApplicationFromXMLFile\\PersonsApplicationFromXMLFile\\DAL\\Personal.xml");
foreach (XmlNode node in doc.SelectNodes("/Persons/record"))
{
persons.Add(new Personal
{
ID = node["ID"].InnerText,
Name = node["Name"].InnerText,
Email = node["Email"].InnerText,
DateOfBirth = node["DateOfBirth"].InnerText,
Gender = node["Gender"].InnerText,
City = node["City"].InnerText
});
}
switch (sortOrder)
{
case "ID":
personals = persons.OrderBy(Personal => Personal.ID);
break;
case "Name":
personals = persons.OrderBy(Personal => Personal.Name);
break;
case "City":
personals = persons.OrderBy(Personal => Personal.City);
break;
default:
break;
}
return View(persons);
}
我尝试过的方法包括.getElementByTagNameID.toString.OrderBy…,但没有效果。我很确定我的语法全错了。
请帮助并感谢您。我认为您需要将was排序收集结果集设置为persons,否则,该收集不是按排序的
switch (sortOrder)
{
case "ID":
persons = persons.OrderBy(Personal => Personal.ID).ToList();
break;
case "Name":
persons = persons.OrderBy(Personal => Personal.Name).ToList();
break;
case "City":
persons = persons.OrderBy(Personal => Personal.City).ToList();
break;
default:
break;
}
return View(persons);
我会使用linq而不是foreach,让代码更清晰
选择nodes/Persons/record.Cast使用Cast让XmlNodeList到IEnumerable集合,然后使用
林克选择
首先,你需要退货
...
return View(personals);
这给了我另一个错误,把它从contextList@MathewDodson您只需添加.ToList,因为我认为您的视图需要使用列表类型,现在它让我“使用未分配的局部变量personals”。尝试一切。@MathewDodson我编辑我的答案并添加另一个我认为更好的解决方案。或者只返回Viewpersonalspersonals!=人
...
return View(personals);