書籍転載:ASP.NET MVC 5 実践プログラミング
LINQ:エンティティ同士を結合する - join句[C#]
特定のキー列でエンティティ同士を結合し、複数のエンティティをまとめて取得するための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で言うところの内部結合に相当する操作です。
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);
}
|
- *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]を参照してください。
23. LINQ:特定範囲のデータだけを取得する - Skip/Takeメソッド[C#]
指定された件数だけデータを読み飛ばすためのSkipメソッドと、指定された件数のデータだけを取得するためのTakeメソッドについて解説。書籍転載の23本目(基礎編「5-3-6」)。
24. LINQ:先頭のデータを取得する - Firstメソッド[C#]
クエリ後の結果セットから先頭のデータを取得するためのFirstメソッドについて解説する。書籍転載の24本目(基礎編「5-3-7」)。
25. LINQ:データをグループ化する - group句[C#]
特定のキー列でデータをグループ化するためのgroup句/GroupByメソッドについて解説する。書籍転載の25本目(基礎編「5-3-8」)。
26. 【現在、表示中】≫ LINQ:エンティティ同士を結合する - join句[C#]
特定のキー列でエンティティ同士を結合し、複数のエンティティをまとめて取得するためのjoin句/Joinメソッドについて解説する。書籍転載の26本目(基礎編「5-3-9」)。
27. 開発者に人気のCSSフレームワーク「Bootstrap」入門
「レスポンシブデザインに対応したグリッドシステム」などの特長で、特に開発者に人気のCSSフレームワーク「Bootstrap」について解説する。書籍転載の27本目(応用編「8-2-5」)。転載は今回で終了。