質問

結果を日付で並べ替えるのが困難です。特別な方法はありますか? 私は今これをやっているから:

var db = new DB();
var articles = db.Articles;
var orderedArticles = articles.OrderBy(a => a.Date);
return View(orderedArticles.ToList());

日付は日時フィールドです。 また、 OrderBy(..)または OrderByDescending(..)

には効果がありません

だから何が起こっているのかを確認できました。

毎回新しい記事を追加します。時刻ではなく日付を使用しています たとえば、同じ日に2つの記事がある場合: with:

var orderedArticles = db.Articles.OrderByDescending(a => a.Date).ToList();

私は持っているだろう

Id         Title                           Date
10         First Added  Article            16/09/2009 00:00
11         Second Added Article            16/09/2009 00:00
15         Old Article Added Later         15/09/2009 00:00

つまり、日付でフィルタリングしていることがわかりますが、問題は同じ日付になったときにソートがフォーカスを失うことです。 だから私がやったことは、Idによる最初の注文と日付による後の注文のような2つの異なるコンテキストのorderByです:

var orderedArticles = db.Articles.OrderByDescending(a => a.Id).OrderByDescending(a => a.Date).ToList();

だからこの後、私は以下を持っています:

Id         Title                           Date
11         Second Added Article            16/09/2009 00:00
10         First Added  Article            16/09/2009 00:00
15         Old Article Added Later         15/09/2009 00:00

主な問題は、2009年9月16日のような日付フィールドを送信すると、時刻が00:00に設定され、これが問題になるためです。この状況。

役に立ちましたか?

解決

このコードは適切に見えます。 Dateフィールドの実際の内容を確認し、たとえばデータベースレベルでDateTimeオブジェクトのDateのみを設定しないようにしてください。これにより、特定の日付のすべてのDateTimeオブジェクトが00:00:00を指すようになります。したがって、LINQはそれらの並べ替え方法を知りません。

他のヒント

入力した回答(編集として質問に移動する必要がある)を見て、新しいOrderByではなくThenByを適用する必要があります:

var articles = db.Articles.OrderByDescending(a => a.Date).ThenBy(a => a.Id).ToList();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top