Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.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# 在参数中使用字段名对IList排序_C#_Linq_Lambda - Fatal编程技术网

C# 在参数中使用字段名对IList排序

C# 在参数中使用字段名对IList排序,c#,linq,lambda,C#,Linq,Lambda,我有一段简单的代码 public ActionResult ListToGrid(string field, string direction) { _model.MyList = _repo.List(); } 要排序,我可以执行以下操作: _model.MyList = _employeeService.List().OrderBy(x => x.FirstName).ToList<Employee>(); \u model.MyList=\u employee

我有一段简单的代码

public ActionResult ListToGrid(string field, string direction)
{
    _model.MyList = _repo.List();
}
要排序,我可以执行以下操作:

_model.MyList = _employeeService.List().OrderBy(x => x.FirstName).ToList<Employee>();
\u model.MyList=\u employeeService.List().OrderBy(x=>x.FirstName.ToList();
但我想在参数中使用“as field”这个名称receive(field)和receive的方向


谢谢,

搜索有关动态LINQ表达式的网站。例如,此示例显示了如何进行动态排序:


然后,您还可以根据方向参数选择是调用
OrderBy
还是
OrderByDescending

您可以使用反射,但这将非常缓慢。最有效的方法是声明要在排序中使用的委托,并根据字符串分配函数:

Func<Employee,string> order;
switch (field) {
   case "FirstName": order = x => x.FristName;
   case "LastName": order = x => x.LastName;
}
Func顺序;
开关(现场){
案例“FirstName”:order=x=>x.FristName;
案例“LastName”:order=x=>x.LastName;
}
对于方向,我认为最好使用单独的代码:

var list = _employeeService.List();
IEnumerable<employee> sorted;
if (direction == "ascending") {
   sorted = list.OrderBy(order);
} else {
   sorted = list.OrderByDescending(order);
}
_model.List = sorted.ToList<Employee>();
var list=\u employeeService.list();
可数排序;
如果(方向=“上升”){
排序=list.OrderBy(订单);
}否则{
排序=list.OrderByDescending(顺序);
}
_model.List=sorted.ToList();

你能举个例子吗,如何将“订单”与_model.MyList一起使用它是IList。。。。谢谢,_model.MyList.OrderBy(order)返回一个IEnumerable。