Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.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 4中的多排序_C#_Entity Framework_Sorting_Asp.net Mvc 4 - Fatal编程技术网

C# ASP.NET MVC 4中的多排序

C# ASP.NET MVC 4中的多排序,c#,entity-framework,sorting,asp.net-mvc-4,C#,Entity Framework,Sorting,Asp.net Mvc 4,如何对多个列进行排序?我尝试使用以下表达式: if (name != null) { if (name.Equals(SortEnum.ASC)) { employees = employees.OrderBy(e => e.Name); } else if (name.Equals(SortEnum.DESC)) { employees = employees.OrderByDescending(e => e.

如何对多个列进行排序?我尝试使用以下表达式:

if (name != null)
{
    if (name.Equals(SortEnum.ASC))
    {
        employees = employees.OrderBy(e => e.Name);
    }
    else if (name.Equals(SortEnum.DESC))
    {
        employees = employees.OrderByDescending(e => e.Name);
    }
}

if (surname != null)
{
     if (surname.Equals(SortEnum.ASC))
     {
         employees = employees.OrderBy(e => e.Surname);
     }
     else if (surname.Equals(SortEnum.DESC))
     {
         employees = employees.OrderByDescending(e => e.Surname);
     }
}
但只有最后一列被排序。在某个地方我看到了方法
ThenBy()
,但我没有它。
请帮助。

使用
System.Linq.Dynamic

List<string> orderstr = new List<string>();
orderstr.Add((name != null)? name.Equals(SortEnum.ASC)? "Name ASC": "Name DESC" : string.Empty);
orderstr.Add((surname != null)? surname.Equals(SortEnum.ASC)? "Surname ASC": "Surname DESC" : string.Empty);
var reslt = employees.OrderBy(string.Join(", ",orderstr.Where(x=>!string.IsNullOrEmpty(x))));
List orderstr=new List();
orderstr.Add((name!=null)?name.Equals(SortEnum.ASC)?“name ASC”:“name DESC”:string.Empty);
orderstr.Add((姓氏!=null)?姓氏等于(SortEnum.ASC)?“姓氏ASC”:“姓氏描述”:string.Empty);
var reslt=employees.OrderBy(string.Join(“,”,orderstr.Where(x=>!string.IsNullOrEmpty(x));

您不能在
OrderBy
之后使用
ThenBy()
?这很奇怪。真的很奇怪,这应该可以工作
employees.OrderBy(e=>e.Name)。然后是by(e=>e.姓氏)
employees.OrderByDescending(e=>e.Name),然后ByDescending(e=>e.姓氏)确实可以,但只能在方法OrderBy之后。在我的例子中,我不能使用它。你的意思是说你需要检查
name
name
保持什么方向,然后使用适当的顺序?@Nilesh是的,我是认真的。