私はこのフォーラムをコーディングしています。私はLINQを初めて使ったので、ユーザーがメインページにヒットしたときにこの問題に遭遇しました。私はこのようなフォーラムの一覧を表示するテーブルが欲しい:フォーラムのLINQクエリ
Forum --- Topics (count) --- Posts (count) --- LastPostUserId --- LastPostTime
私は、次のSQLテーブルがある:
Forums:
ForumId (int32),
Title (string),
Description (string)
ForumThreads:
ThreadId (int32),
ForumId (int32),
UserId (guid),
Subject (string),
Views (int32),
CreateDate (DateTime)
ForumPosts:
PostId (int32),
ThreadId (int32),
UserId (guid),
Post (string),
CreateDate (datetime)
はofcourseのテストされていない
Take(1)がnullの場合、エラーをスローしません。しかし、それはLastPostThreadId = lastPost.ThreadIdとして変数を宣言することはできないようです - 私は.Select()を使用する必要がありますか? IOrderedQueryableの代わりに強く型付けされた値を返すことは可能ですかなど? –
Morten
ああ、それはTake(1)もTake(100)である可能性があるので、システムはあなたが単一のForumPostを返していることを知らないからです。そのため、.Take(1)の代わりに.FirstOrDefault()を使用する必要があります。これにより、lastPost.CreateDateを使用できるようになり、IOrderedQueryableではなくDateTimeとして返されます。 –
とにかくnullをチェックする必要があります。最も簡単な方法は次のとおりです。 LastPostTime =(lastPost!= null?lastPost.CreateDate:null) –