我有一個Article
實體結構如下C#條件排序依據
public class Article
{
public decimal Price {get;set;}
public decimal? SalePrice {get;set;}
public bool OnSale {get;set;}
}
我需要做的是通過以下條件來查詢由他們的價格文章: 如果文章有售,取它的銷售價格,如果不是,拿它的正常價格。
因此,對於一個示例:
- 第A(OnSale的=真,價格= 10,SalePrice = 5)
- B條(OnSale的=假,價錢= 4,SalePrice = NULL)
- C條(OnSale的=假,價錢= 22,SalePrice = 10)
當由價格訂購,順序應該是
乙(對大米4)
A(價格5) - 導致它的銷售價格
C(價格22)
我試着用
IQueryable<Article> articlesQuery = dal.Where<Article>(m => m.Active);
articlesQuery = articlesQuery.OrderBy(m => m.OnSale ? m.PriceSale : m.PriceSale);
,但它不會給期望的結果。
任何幫助表示讚賞。
爲什麼在lambda中使用'PriceSale'兩次? –
除了上述和解決的問題,我不認爲這是一個偉大的設計,以多種原因存儲一篇文章的價格。爲什麼不引入ArticlePrice和'公衆ICollection ArticlePrices {get;組; }屬性?只有一個價格在一段時間內有效,並且您可以有多個重疊銷售。然後可以在「ArticlePrice」中註冊某個價格是銷售價格還是一次性折扣。 –
CodeCaster