Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC中LINQ使用的XML排序_C#_Xml_Linq_View_Controller - Fatal编程技术网

C# ASP.NET MVC中LINQ使用的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

我正在尝试对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);
    }
我尝试过的方法包括.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);