如何在Linq orderby中做"if"?

use*_*554 2 c# linq sql-order-by

我有2个字段用于排序:产品名称和价格加2个选项:升序或降序.

用户可以通过设置2个复选框来指定排序顺序:打开或关闭价格复选框,打开或关闭复选框.

在根据上述2个复选框的设置动态设置排序顺序时,如何编写orderby子句?谢谢.

Bry*_*tts 6

您可以通过有条件地指定OrderBy子句来构建查询:

var query = from product in db.Products select product;

if(price.Checked && ascending.Checked)
{
    query = query.OrderBy(product => product.Price);
}
else if(price.Checked && !ascending.Checked)
{
    query = query.OrderByDescending(product => product.Price);
}
else if(!price.Checked && ascending.Checked)
{
    query = query.OrderBy(product => product.Name);
}
else
{
    query = query.OrderByDescending(product => product.Name);
}
Run Code Online (Sandbox Code Playgroud)