C#といえばLINQ。SQLっぽい構文でデータを取得できる。
成果物
情報源
- https://docs.microsoft.com/ja-jp/dotnet/csharp/linq/
- https://docs.microsoft.com/ja-jp/dotnet/csharp/linq/query-expression-basics
Linqについて
Linqとは、クエリに基づいてデータソースから以下のいずれかを取得する構文。
- イテレータ
- サブセットを取得する
- 新しい型に変換する
- 単一値を取得する
コード
サブセットを取得する
using System; using System.Linq; using System.Collections.Generic; class Main { public void Run() { int[] a = new int[] { 1, 2, 3, 4, 5 }; IEnumerable<int> b = from v in a where 1 == (v % 2) select v; foreach (int v in b) { Console.WriteLine($"v={v}"); } } }
新しい型に変換する
class Main { public void Run() { int[] a = new int[] { 1, 2, 3, 4, 5 }; IEnumerable<string> b = from v in a where 1 == (v % 2) select $"v={v}"; foreach (string v in b) { Console.WriteLine(v); } } }
単一値を取得する
class Main { public void Run() { int[] a = new int[] { 1, 2, 3, 4, 5 }; int count = (from v in a where 1 == (v % 2) select $"v={v}").Count(); Console.WriteLine($"odd={count}"); } }
語
名前 | 意味 |
---|---|
クエリ | 命令セット。データから取得条件や形式を指示する |
クエリ式 | クエリ構文で表されたクエリのこと |
クエリ変数 | 結果でなくクエリを格納した変数のこと |
クエリ構文
構文 | 句 |
---|---|
開始 | from 句 |
終了 | select or group |
他にもinto
, where
, join
, orderby
, let
などがある。
副問合せ(サブクエリ)もできる。
対象環境
- Raspbierry pi 3 Model B+
- Raspbian stretch 9.0 2018-11-13 ※
- bash 4.4.12(1)-release ※
- SQLite 3.29.0 ※
- C# dotnet 3.0.100 ※
$ uname -a Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux