XML 排序在 ASP.NET MVC 中使用了 LINQ



我正在尝试对xml文件中的某些列进行排序。这是我所拥有的。

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);
}

我尝试过的东西包括.getElementByTagName("ID"(.toString((。OrderBy(...(,但无济于事。我很确定我的语法都错了。 请帮忙,谢谢。

我认为您需要将已排序的集合结果设置为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让代码更清晰。

SelectNodes("/Persons/record").Cast<XmlNode>()使用Cast<XmlNode>()XmlNodeListIEnumerable<XmlNode>集合然后使用 林克select.

public ActionResult Index(string sortOrder)
{
XmlDocument doc = new XmlDocument();
doc.Load("C:\Users\Matt.Dodson\Desktop\SampleWork\PersonsApplicationFromXMLFile\PersonsApplicationFromXMLFile\DAL\Personal.xml");
IEnumerable<Personal> persons = doc.SelectNodes("/Persons/record")
.Cast<XmlNode>()
.Select(node => 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":
persons = persons.OrderBy(Personal => Personal.ID);
break;
case "Name":
persons = persons.OrderBy(Personal => Personal.Name);
break;
case "City":
persons = persons.OrderBy(Personal => Personal.City);
break;
default:
break;
}
return View(persons.ToList());
}

首先,您需要返回个人

...
return View(personals);

最新更新