如何做“;如果“;在Linq orderby中

本文关键字:orderby Linq 如果 何做 | 更新日期: 2023-09-27 18:20:14

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

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

当排序顺序是根据上面两个复选框的设置动态设置的时,我如何对orderby子句进行编码?谢谢

如何做“;如果“;在Linq orderby中

您可以通过有条件地指定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);
}

请注意,下面的上升条件是基于您的代码

if(ascendingCondition)
{
   ProductCollection.OrderBy(p => p.Name).ThenBy(p => p.Price)
}
else
{
   ProductCollection.OrderByDescending(p => p.Name).ThenByDescending(p => p.Price)
}