c#条件OrderBy

Rob*_*ert 1 c# linq lambda linq-to-sql

我有一个Article具有以下结构的实体

public class Article
{
    public decimal Price {get;set;}
    public decimal? SalePrice {get;set;}
    public bool OnSale {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要做的是按照以下标准按价格查询文章:如果文章正在销售,请拿它的销售价格,如果没有,请按正常价格.

举个例子:

  • 文章A(OnSale = True,价格= 10,SalePrice = 5)
  • B条(ONSale = False,Price = 4,SalePrice = NULL)
  • C条(OnSale = False,价格= 22,SalePrice = 10)

按价格订购时,订单应该是

B(价格4)

A(价格5) - 导致它的销售价格

C(价格22)

我试过了

IQueryable<Article> articlesQuery = dal.Where<Article>(m => m.Active);
articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.PriceSale : m.PriceSale);
Run Code Online (Sandbox Code Playgroud)

但它没有给出理想的结果.

任何帮助表示赞赏.

Lew*_*lor 9

if的两边是同一个变量吗?(而不是上述类中的变量).
不应该是:

articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.SalePrice: m.Price);
Run Code Online (Sandbox Code Playgroud)