簡體   English   中英

按日期在不同方向排序

[英]Order by date in different directions

我有一個預訂系統和一個顯示用戶預訂的頁面 - 過去和未來。

我想先訂購未來的預訂,訂購下一個會議在頂部(asc),然后通過預訂,從最新會議(desc)開始。

我目前有這個:

from sess in Sessions
    orderby sess.SessionDate < DateTime.Now.Date, sess.SessionDate
    select sess

但是這給了兩組asc順序。 在第一個order by子句之后有條件排序的任何方法?

我也考慮過使用IQueryable<T>.Concat 這會是要走的路嗎? 我認為這會產生某種聯盟,但我可以保證它會保留兩組的排序順序嗎?

例如結果:會話

2015-03-01 - some class
2015-03-15 - a different class
2015-04-10 - also a class
(the split between past and future sessions)
2014-12-22 - some tutorial
2014-11-15 - some sort of class
2014-10-08 - some other class

您可以使用三元運算符與DateDiff函數結合使用二階。 這將允許您交換DateTime.NowSessionDate

let isSessionDateLessThanNow = sess.SessionDate < DateTime.Now
orderby isSessionDateLessThanNow, 
        isSessionDateLessThanNow ? 
           SqlFunctions.DateDiff("s", sess.SessionDate, DateTime.Now) :
           SqlFunctions.DateDiff("s", DateTime.Now, sess.SessionDate)

那么將它分成兩個單獨的查詢,第一個是會話日期升序的未來會話順序。 將它們添加到列表中。 然后是會話日期降序的過去會話的另一個查詢。 將它們添加到同一列表中。

我沒有看到任何機會解決這個我一個查詢沒有任何混亂。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM