【发布时间】:2014-06-06 00:08:34
【问题描述】:
例如,我想尝试这样的事情。排序标准可能没有、1 个或多个按不同顺序排列的列。但是我不能使用ThenBy 方法,因为它只能在OrderBy 之后使用。下面的代码将继续将顺序重置为排序列表中的最后一项。我也不想更改方法签名。非常感谢您的帮助,谢谢。
public IQueryable<Person> FilterList(string forename, List<Sorting> sorting)
{
IQueryable<Person> query = dc.Set<Person>();
if(!string.IsNullOrEmpty(forename)){
query = query.Where(w=>w.Forename.Contains(forename));
foreach(var sort in sorting)
{
switch(sort.By)
{
case "asc":
switch(sort.Sort)
{
case "forename":
query = query.OrderBy(o=>o.Forename);
break;
case "surname":
query = query.OrderBy(o=>o.Surname);
break;
}
break;
case "desc":
switch(sort.Sort)
{
case "forename":
query = query.OrderByDescending(o=>o.Forename);
break;
case "surname":
query = query.OrderByDescending(o=>o.Surname);
break;
}
break;
}
}
return query;
}
public class Sorting
{
public string Sort{get;set;}
public string By{get;set;}
}
【问题讨论】:
-
当你想要动态排序时,看看这个总是好的:stackoverflow.com/questions/41244/…(即使它不能直接解决你的问题)
标签: c# linq entity-framework sql-order-by