0

多数のフォーラムがあるディスカッションアプリケーションを開発したいと思います。各フォーラムには、多くのスレッドが存在する可能性があります。また、各スレッドには、多数の投稿が存在する可能性があります。SQLには、次の4つのテーブルがあります。

FORUMS

  • Id-intアイデンティティ
  • 名前-nvarchar//フォーラムの名前

THREADS

  • Id-intアイデンティティ
  • ForumId-FORUMS.Idへのint外部キー
  • 件名-nvarchar

POSTS

  • Id-intアイデンティティ
  • ThreadId-THREADS.Idへのint外部キー
  • 送信者-USERS.Idへのint外部キー
  • SubmitterOn-日時
  • コンテンツ-nvarchar

USERS

  • Id-intアイデンティティ
  • 名前-nvarchar

データベース内のすべてのフォーラムの次の列を含むリストを返す最良の方法は何ですか(リストの1行はの1行に対応しますFORUMS)。

  • Forum--FORUMS.Name
  • スレッド数-スレッドの合計行数Forum
  • 投稿数-に属するPOSTSの行の総数Forum
  • 最後のスレッド-THREADS.Subjectに属する最新のPOSTSForum
  • 最終投稿の送信者-USERS。に属する最新の投稿の名前Forum
  • 最終投稿送信時刻-に属する最新のPOSTSのPOSTS.SubmittedOnForum

ありがとう

4

1 に答える 1

1

何かのようなもの:

var query = from f in context.Forums
            select new
            {
                Name = f.Name,
                Threads = f.Threads.Count(),
                Posts = f.Threads.Sum(t => t.Posts.Count()),
                LastThread = f.Threads.OrderByDescending(t => t.Id).First().Subject,
                LastPostSubmitter = f.Threads.SelectMany(t => t.Posts).OrderByDescending(p => p.SubmitterOn).First().Name,
                LastPostSubmitterTime = f.Threads.SelectMany(t => t.Posts).OrderByDescending(p => p.SubmitterOn).First().SubmitterOn
            }
于 2013-01-02T13:31:56.253 に答える