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

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

LINQ:先頭のデータを取得する - Firstメソッド[C#]

2014年12月2日

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

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

書籍転載について

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

 

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

ご注意

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

5-3-7 先頭のデータを取得する - Firstメソッド

 結果セットから先頭のデータを取得する場合、Skip/Takeメソッドを利用しても、もちろん構いませんが、より直感的に利用できるFirstメソッドが用意されています*33

  • *33 対応するクエリー式構文はありません。
C#
public ActionResult First()
{
  // 最新の記事1件を取得
  var articles = (from a in db.Articles
                  orderby a.Published descending
                  select a).First();

  return Content(articles.Title);   // 結果:ASP.NET MVC 入門
}
リスト5-46 Controllers/LinqController.cs

 ただし、Firstメソッドは該当するデータが存在しない場合には、InvalidOperationException例外を発生します。もしもデータが存在しない場合にも、その型のデフォルト値*34を返したいという場合には、FirstOrDefaultメソッドを利用してください。

  • *34 参照型、またはnull許容型の場合には、デフォルト値はnullです。
C#
public ActionResult FirstOrDefault()
{
  var articles = (from a in db.Articles
                  where a.Url == "http://nothing.org/"
                  select a).FirstOrDefault();

  if (articles == null)
  {
    return Content(" 該当する記事情報は存在しません。");
  }
  return Content(articles.Title);
}
リスト5-47 Controllers/LinqController.cs

        ▼

該当する記事情報は存在しません。

 太字部分をFirstメソッドに置き換えると、例外の発生を確認できます。

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

書籍転載:ASP.NET MVC 5 実践プログラミング
22. LINQ:重複のないデータを取得する - Distinctメソッド[C#]

クエリ後の結果セットから重複したデータを除去するためのDistinctメソッドについて解説する。書籍転載の22本目(基礎編「5-3-5」)。

書籍転載: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」)。

サイトからのお知らせ

Twitterでつぶやこう!