Deep Insider の Tutor コーナー
>>  Deep Insider は本サイトからスピンオフした姉妹サイトです。よろしく! 
書籍転載:ASP.NET MVC 5 実践プログラミング

書籍転載:ASP.NET MVC 5 実践プログラミング

LINQ:エンティティ同士を結合する - join句[C#]

2014年12月9日

特定のキー列でエンティティ同士を結合し、複数のエンティティをまとめて取得するためのjoin句/Joinメソッドについて解説する。書籍転載の26本目(基礎編「5-3-9」)。

  • このエントリーをはてなブックマークに追加

書籍転載について

 本コーナーは、秀和システム発行の書籍『ASP.NET MVC 5 実践プログラミング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。

 

 『ASP.NET MVC 5 実践プログラミング』の詳細や購入は秀和システムのサイト目次ページをご覧ください。

ご注意

 本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。

5-3-9 エンティティ同士を結合する - join句

 join句/Joinメソッドを利用することで、特定のキー列でエンティティ同士を結合し、複数のエンティティをまとめて取得できます。SQLで言うところの内部結合に相当する操作です。

C#
public ActionResult Join()
{
  var articles = from a in db.Articles
                 join c in db.Comments on a equals c.Article
                 select new ArticleCommentView
                 {
                   Title = a.Title, Body = c.Body
                 };

  // メソッド構文
  //var articles = db.Articles
  //                 .Join(db.Comments, a => a, c => c.Article,
  //                   (a, c) => new ArticleCommentView
  //                   {
  //                     Title = a.Title, Body = c.Body
  //                   });

  return View(articles);
}
リスト5-54 Controllers/LinqController.cs *40
図5-23 コメントと関連する記事一覧を取得
  • *40 対応するビューモデルArticleCommentView、ビュースクリプトJoin.cshtmlは、配布サンプルを参照してください。

 join 結合するデータソース on 結合キー1 equals 結合キー2で、エンティティ同士を結合します。この例であれば、Articleエンティティと、対応するArticleプロパティを持つCommentエンティティを結合しなさいという意味になります。

 Joinメソッドの場合の構文は、以下のとおりです。

【構文】Joinメソッド

IQueryable<TResult> Join<TOuter, TInner, TKey, TResult>(IEnumerable<TInner> inner, Func<TOuter, TKey> outerKeySelector, Func<TInner, TKey> innerKeySelector, Func<TOuter, TInner, TResult> resultSelector)

  • TOuter: 結合する最初の要素の型
  • TInner: 2番目の要素の型
  • TKey: キーの型
  • TResult: 結果の要素の型
  • inner: 結合するデータソース
  • outerKeySelector: 比較キー1
  • innerKeySelector: 結合キー2
  • resultSelector: 結合結果を取得するメソッド

※以下では、本稿の前後を合わせて5回分(第23回~第27回)のみ表示しています。
 連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。

書籍転載:ASP.NET MVC 5 実践プログラミング
23. LINQ:特定範囲のデータだけを取得する - Skip/Takeメソッド[C#]

指定された件数だけデータを読み飛ばすためのSkipメソッドと、指定された件数のデータだけを取得するためのTakeメソッドについて解説。書籍転載の23本目(基礎編「5-3-6」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
24. LINQ:先頭のデータを取得する - Firstメソッド[C#]

クエリ後の結果セットから先頭のデータを取得するためのFirstメソッドについて解説する。書籍転載の24本目(基礎編「5-3-7」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
25. LINQ:データをグループ化する - group句[C#]

特定のキー列でデータをグループ化するためのgroup句/GroupByメソッドについて解説する。書籍転載の25本目(基礎編「5-3-8」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
26. 【現在、表示中】≫ LINQ:エンティティ同士を結合する - join句[C#]

特定のキー列でエンティティ同士を結合し、複数のエンティティをまとめて取得するためのjoin句/Joinメソッドについて解説する。書籍転載の26本目(基礎編「5-3-9」)。

書籍転載:ASP.NET MVC 5 実践プログラミング
27. 開発者に人気のCSSフレームワーク「Bootstrap」入門

「レスポンシブデザインに対応したグリッドシステム」などの特長で、特に開発者に人気のCSSフレームワーク「Bootstrap」について解説する。書籍転載の27本目(応用編「8-2-5」)。転載は今回で終了。

サイトからのお知らせ

Twitterでつぶやこう!