私は現在フォーラムを開発中です。私はLINQとEFが初めてです。私のフォーラムでは、最新のトピックを最初に含むトピックのリストを表示するディスプレイがあります。LINQ to Entities orderbyとnullのコレクションに関する質問
問題は、「最新」はトピックの返信に関連していることです。だから私はトピックの投稿日付でリストを注文するのではなく、トピックの最後の返信の投稿日付でリストを注文したいと思います。新しい返答のあるトピックがリストの先頭にポップアップするようにします。すべてのトピックに少なくとも1つの返信があることが分かっていれば、これは簡単です。私はちょうどこれを行うでしょう:
var topicsQuery = from x in board.Topics
orderby x.Replies.Last().PostedDate descending
select x;
しかし、多くの場合、トピックには返信がありません。その場合は、トピックの投稿日付を代わりに使用したいと考えています。トピックに応答がない場合、x.PostedDate
で注文するようにlinqクエリ内に方法がありますか?私はこれで混乱していると助けていただければ幸いです。上記のクエリでは、返信があると仮定してx.Replies.Last()
があるため、返信なしのトピックが壊れます。 LastOrDefault()
は、返信があることを前提とするPostedDateプロパティにアクセスする必要があるため、機能しません。
ありがとうございました。
すべての返事を受け取ってループし、if文を使用して回答があるかどうかを判断し、そのように新しいリストを作成することで、おそらくそれを行うことができます。しかし、クエリ内でそれを行い、毎回ループしない方法があれば、それは素晴らしいことです。 – Chev