LINQ查询动态排序 [英] LINQ Queries with dynamic Order By
问题描述
我有一个查询,我需要基于一个查询参数。例如,如果SortBy参数是价格有ordeby,查询需要改变与价格。如果其评级不是改变查询按排名进行排序。
I have a query where I need to have ordeby based on a querystring parameter .For example if sortby parameter is price , Query needs to change with price . If its rating than change query to sort by rating .
我知道predicateBuilder能做到AND和OR的东西,但我怎么做一个动态的ordeby LINQ查询。
I know PredicateBuilder can do And and OR stuff but how do I make a dynamic ordeby linq query .
推荐答案
那么,你可以使用switch语句或类似的东西:
Well, you could use a switch statement or something similar:
IQueryable<Foo> query = ...;
switch (orderByParameter)
{
case "price":
query = query.OrderBy(x => x.Price);
break;
case "rating":
query = query.OrderBy(x => x.Rating);
break;
// etc
}
您也可以做到这一点与反思,但假设你有域有限数量的命令通过,这很可能是最简单的方法。
You could also do it with reflection, but assuming you have a limited number of fields to order by, this is quite possibly the simplest approach.
这篇关于LINQ查询动态排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!