2017-07-31 36 views
0

我想編寫一個EF查詢,它根據條件進行升序或降序排序。以下是我的僞代碼:實體框架按查詢中的行字段降序排列

var result= q.OrderByDescending(x => x.StatusId == 3) 
        then if(x.StatusId == 3) 
          then order by x.ReserveDate 
        else 
          then order by descending x.LastUpdateDate 

我該怎麼做?

+0

按照給定鏈路它會幫助你。 https://stackoverflow.com/questions/2643383/order-by-descending-based-on-condition –

+0

'var query = q.OrderByDescending(...); if(..)query = query.ThenBy(...); else query = query.ThenByDescending(...); result = query.ToList();'或類似的東西。 – pinkfloydx33

+0

對我來說沒有意義,您將結果集列值與3進行比較並進行排序。相反,您應該在查詢之前應用條件,然後對結果集進行排序。如果x = 3,查詢應該返回OrderDate的順序,否則按上次更新日期的順序排序。 –

回答

1

您可以在一個OrderBy做到這一點,例如:

var results = q.OrderByDescending(x => 
    x.StatusId == 3 ? x.ReserveDate : x.LastUpdateDate) 
+0

其中一個命令是asc,接下來是desc –

+0

這沒有任何意義。您需要[編輯](https://stackoverflow.com/posts/45413080/edit)您的問題,並提供示例數據和預期輸出。 – DavidG