2022年01月09日
川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!total 394 count

クエリ式の基礎: LINQの2つの顔

Written By: 川俣 晶連絡先

この章のテーマ §

 クエリ式とクエリのメソッド形式について学びます。

前提知識 §

Console.WriteLineメソッド, 文字列の基礎, 変数の基礎, string型, foreach文

解説 §

 C#にはLINQ(統合言語クエリ)というものがあります。

 これは、列挙可能なオブジェクト、SQLデータベース、XML文書などを検索する統一された書式を提供する機能です。

 これには、クエリ式とメソッド形式という2つの書き方が存在します。

 クエリ式は、SQLのクエリ構文っぽくソースを書けるようにしたもので、SQLに慣れている人は比較的書きやすい方法です。

 メソッド形式は、クエリを実際に行うメソッドを直接呼び出してしまう方法で、効率が高く通好みです。

 クエリ式は、通常from句で始まりselect句で終わります。

 from句は、"from 一時変数 in ソース"と書きます。ソースは列挙可能なオブジェクトや、データベースのテーブルなどです。

 select句は、引数として結果として返す値を記述します。

 クエリ式で良く使われるものには、他にwhere句とorderby句があります。

 where句は、条件を制限します。この条件式をパスしたものだけが選択されます。サンプルソースでは、StartsWithメソッドで"A"で始まる文字列だけを選んでいます。

 orderby句は指定した値でソートを行います。

 メソッド形式の場合は、名前のAPI名を書くので大文字小文字のコンビネーションが変化します。一部は名前そのものが変化します。また、引数に渡す式はラムダ式として書かねばなりません。

罠の数々 §

  • クエリ式は列挙オブジェクトを返すのであって、列挙を行うわけではない。列挙するには別途foreach文などを必要とする。ただし、例外的に列挙を行う機能も存在する(合計値を計算するSumメソッドなど)
  • クエリ式には他にもいろいろな機能が存在する。ここで紹介したのは基本的な一部だけだ
  • orderby句はdescendingを追加すると逆順ソートも可能だ
  • ベテランはメソッド形式を使うことが多い。理由は簡単でより短く書けて自由度も高いから

参考リンク §

クエリ式の基本

サンプルソース: queryExpression §

string[] array = { "Alice", "Betty", "Aiko", "Cindy", "Abbie" };

Console.WriteLine("クエリ式の例");

var q1 = from n in array where n.StartsWith("A") orderby n select n.ToUpper();

foreach (var item in q1) Console.WriteLine(item);

Console.WriteLine("メソッド形式の例");

var q2 = array.Where(c=>c.StartsWith("A")).OrderBy(c=>c).Select(c=>c.ToUpper());

foreach (var item in q2) Console.WriteLine(item);

実行結果 §

クエリ式の例

ABBIE

AIKO

ALICE

メソッド形式の例

ABBIE

AIKO

ALICE

リポジトリ §

https://github.com/autumn009/CSharpPrimer2

練習問題 §

クエリ式のfromに相当するメソッド形式でのメソッドはどれだろうか?

  1. fromメソッド
  2. Fromメソッド
  3. Whereメソッド
  4. Selectメソッド
  5. そんなものはない

[[解答]]

Facebook

キーワード【 川俣晶の縁側ソフトウェアnew_C#入門・全キーワード明快解説!
【new_C#入門・全キーワード明快解説!】の次のコンテンツ
2022年
01月
10日
yield: 列挙可能なメソッドを自作しよう
3days 2 count
total 394 count
【new_C#入門・全キーワード明快解説!】の前のコンテンツ
2022年
01月
07日
演算子の優先順位: 計算の順番を支配する
3days 2 count
total 465 count

このコンテンツを書いた川俣 晶へメッセージを送る

[メッセージ送信フォームを利用する]

メッセージ送信フォームを利用することで、川俣 晶に対してメッセージを送ることができます。

この機能は、100%確実に川俣 晶へメッセージを伝達するものではなく、また、確実に川俣 晶よりの返事を得られるものではないことにご注意ください。

このコンテンツへトラックバックするためのURL

http://mag.autumn.org/tb.aspx/20220109085743
サイトの表紙【new_C#入門・全キーワード明快解説!】の表紙【new_C#入門・全キーワード明快解説!】のコンテンツ全リスト 【new_C#入門・全キーワード明快解説!】の入手全リスト 【new_C#入門・全キーワード明快解説!】のRSS1.0形式の情報このサイトの全キーワードリスト 印刷用ページ

管理者: 川俣 晶連絡先

Powered by MagSite2 Version 0.36 (Alpha-Test) Copyright (c) 2004-2021 Pie Dey.Co.,Ltd.