MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
LINQ - 拡張メソッド一覧のソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
LINQ - 拡張メソッド一覧
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == C#のLINQを種類ごとにまとめて、簡単なサンプルを記述する。<br> <br> 結果の表示に、独自の拡張メソッドToResult(this IEnumerable)を使用している。<br> このメソッドは、本文の最後に記載する。(サンプルコードのダウンロードはこちら)<br> <br><br> == 要素の取得(単一) == 該当の要素がない場合<br> * ~OrDefaultが付いていないメソッドは例外をスローする。<br> * ~OrDefaultが付いたメソッドは型の規定値を返す。<br> <center> {| class="wikitable" |- ! メソッド名 !! 機能 |- | ElementAt<br>ElementAtOrDefault || 指定した位置(インデックス)にある要素を返す。 |- | First<br>FirstOrDefault || 最初の要素を返す。 |- | Last<br>LastOrDefault || 最後の要素を返す。 |- | Single<br>SingleOrDefault || 唯一の要素を返す。該当する要素が複数ある場合、例外をスローする。 |} </center> <source lang="c#"> var source = new[] { 3, 4, 5, 6, 7, 8, 9, 9 }; Console.WriteLine(source.ElementAt(2)); // → 5 Console.WriteLine(source.ElementAtOrDefault(10)); // → 0 Console.WriteLine(source.First()); // → 3 Console.WriteLine(source.First(e => e > 5)); // → 6 Console.WriteLine(source.Last()); // → 9 Console.WriteLine(source.Last(e => e < 5)); // → 4 Console.WriteLine(source.Single()); // → System.InvalidOperationException: シーケンスに複数の要素が含まれている Console.WriteLine(source.Single(e => e < 4 )); // → 3 </source> <br><br> == 要素の取得(複数) == <center> {| class="wikitable" |- ! メソッド名 !! 機能 |- | Where || 条件を満たす要素をすべて返す。 |- | Distinct || 重複を除いたシーケンスを返す。 |- | Skip || 先頭から指定された数の要素をスキップし、残りのシーケンスを返す。 |- | SkipWhile || 先頭から指定された条件を満たさなくなるまで要素をスキップし、残りのシーケンスを返す。 |- | Take || 先頭から指定された数の要素を返す。 |- | TakeWhile || 先頭から指定された条件を満たす要素を返す。 |} </center> <source lang="c#"> var source = new[] { 3, 4, 5, 6, 7, 8, 9, 9 }; Console.WriteLine(source.Where(e => e > 5).ToResult()); // → {6, 7, 8, 9, 9} Console.WriteLine(source.Distinct().ToResult()); // → {3, 4, 5, 6, 7, 8, 9} Console.WriteLine(source.Skip(5).ToResult()); // → {8, 9, 9} Console.WriteLine(source.SkipWhile(e => e < 5).ToResult()); // → {5, 6, 7, 8, 9, 9} Console.WriteLine(source.Take(5).ToResult()); // → {3, 4, 5, 6, 7} Console.WriteLine(source.TakeWhile(e => e < 5).ToResult()); // → {3, 4} </source> <br><br> == 集計 == <center> {| class="wikitable" |- ! メソッド名 !! 機能 |- | Max || 最大値を返す。 |- | Min || 最小値を返す。 |- | Average || 平均値を返す。 |- | Sum || 合計を返す。 |- | Count || 要素数を返す。 |- | Aggregate || アキュムレータ関数で処理した結果を返す。 |} </center> <source lang="c#"> var source = new[] { 3, 4, 5, 6, 7, 8, 9, 9 }; Console.WriteLine(source.Max()); // → 9 Console.WriteLine(source.Min()); // → 3 Console.WriteLine(source.Average()); // → 6.375 Console.WriteLine(source.Sum()); // → 51 Console.WriteLine(source.Count()); // → 8 Console.WriteLine(source.Aggregate((now, next) => now * next)); // → 1632960 // 参考:標本分散 double ave = source.Average(); Console.WriteLine(source.Sum(e => Math.Pow(e - ave, 2)) / source.Count()); // → 4.484375 </source> <br><br> == ソート == <center> {| class="wikitable" |- ! メソッド名 !! 機能 |- | OrderBy || 昇順にソートしたシーケンスを返す。 |- | OrderByDescending || 降順にソートしたシーケンスを返す。 |- | ThenBy || ソートしたシーケンスに対し、キーが等しい要素同士を昇順にソートしたシーケンスを返す。 |- | ThenByDescending || ソートしたシーケンスに対し、キーが等しい要素同士を降順にソートしたシーケンスを返す。 |- | Reverse || 逆順にソートしたシーケンスを返す。 |} </center> <source lang="c#"> var source = new[] { new{Name = "C#", Age = 11}, new{Name = "Java", Age = 16}, new{Name = "Groovy", Age = 8}, new{Name = "Scala", Age = 8}, }; Console.WriteLine(source.OrderBy(e => e.Age).ToResult()); // → {{ Name = Groovy, Age = 8 }, // { Name = Scala, Age = 8 }, // { Name = C#, Age = 11 }, // { Name = Java, Age = 16 }} Console.WriteLine(source.OrderByDescending(e => e.Age).ToResult()); // → {{ Name = Java, Age = 16 }, // { Name = C#, Age = 11 }, // { Name = Groovy, Age = 8 }, // { Name = Scala, Age = 8 }} Console.WriteLine(source.OrderBy(e => e.Age).ThenBy(e => e.Name.Length).ToResult()); // → {{ Name = Scala, Age = 8 }, // { Name = Groovy, Age = 8 }, // { Name = C#, Age = 11 }, // { Name = Java, Age = 16 }} Console.WriteLine(source.OrderBy(e => e.Age).ThenByDescending(e => e.Name.Length).ToResult()); // → {{ Name = Groovy, Age = 8 }, // { Name = Scala, Age = 8 }, // { Name = C#, Age = 11 }, // { Name = Java, Age = 16 }} Console.WriteLine(source.Reverse().ToResult()); // → {{ Name = Scala, Age = 8 }, // { Name = Groovy, Age = 8 }, // { Name = Java, Age = 16}, // { Name = C#, Age = 11 }} </source> <br><br> == 射影 == <center> {| class="wikitable" |- ! メソッド名 !! 機能 |- | Select || 1つの要素を単一の要素に射影する。 |- | SelectMany || 1つの要素から複数の要素に射影する。その結果を1つのシーケンスとして返す。 |- | GroupBy || 指定のキーで要素をグループ化する。その"キーとグループ" のシーケンスを返す。 |} </center> <source lang="c#"> var source = new[] { new{Name = "C#", Age = 11}, new{Name = "Java", Age = 16}, new{Name = "Groovy", Age = 8}, new{Name = "Scala", Age = 8}, }; Console.WriteLine(source.Select(e => e.Name).ToResult()); // → {C#, Java, Groovy, Scala} Console.WriteLine(source.SelectMany(e => e.Name.ToCharArray()).ToResult()); // → {C, #, J, a, v, a, G, r, o, o, v, y, S, c, a, l, a} Console.WriteLine(source.GroupBy(e => e.Age).ToResult()); // → {Key=11, Source={{ Name = C#, Age = 11 }}, // Key=16, Source={{ Name = Java, Age = 16 }}, // Key=8, Source={{ Name = Groovy, Age = 8 }, { Name = Scala, Age = 8 }}} </source> <br><br> __FORCETOC__ [[カテゴリ:C_Sharp]]
LINQ - 拡張メソッド一覧
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse