2010-01-12 56 views
2

字段名我有这样的一段简单的代码秩序的IList与参数

public ActionResult ListToGrid(string field, string direction) 
{ 
    _model.MyList = _repo.List(); 
} 

排序,我可以这样做:

_model.MyList = _employeeService.List().OrderBy(x => x.FirstName).ToList<Employee>(); 

,但我想用“为田”参数名称接收(字段)和接收方向。

谢谢,

回答

2

你可以使用反射,但这会很慢。最有效的将是声明一个代理在排序使用,并根据字符串指定功能:

Func<Employee,string> order; 
switch (field) { 
    case "FirstName": order = x => x.FristName; 
    case "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>(); 
+0

莫非你给一个例子,如何使用“命令”与_model.MyList它是一个IList ....谢谢, – 2010-01-12 07:23:21

+0

_model.MyList.OrderBy(order)返回一个IEnumerable 。 – Guffa 2010-01-12 08:06:05