Linq

[C#] Linqの演算で和集合, 差集合, 積集合 を求める方法

C# で集合(コレクション)に対して演算を行う C# では Linq を使って、集合に対する演算を行えます。よくベン図で表現されるようなやつを C# で表現できます。 例えば2つの集合を足し合わせた集合を作ったり(和集合)、2つの集合両方に含まれる要素からなる集合を作ったり(積集合)ができます。 ここでは和集合、積集合、差集合を求めてみます。 和集合(Union) いずれかに含まれる 集合 x と […]

[Linq] 条件に一致する要素数を数える方法

Linqで条件に一致する要素数を数える方法 Linqを使って、コレクションの中から条件に合うものの数を数える際に、今まではWhere()で条件を絞ってから、Count()をしていました。ですがCount()自体の引数で条件を指定できるのでそちらを利用した方が簡潔だと知りました。 例えば 1~100 の中の偶数の個数を数える処理は次のように書けます。 var count = Enumerable.R […]

[C#][VB] LINQでコレクションをチャンク(N個ずつ)に分割

LINQでチャンク チャンクとは、大きな塊、ぶつ切り、大量、などの意味を持つ英単語です。つまりひとまとまりのデータの塊を指します。 例えば配列などのコレクションに対して、N個ずつの要素のチャンクまとめて処理を行いたい場合があります。100個の要素を持つコレクションを2個の要素をもつチャンク50個に分割するイメージです。これを拡張メソッドとして用意しておけば便利なはずです。 拡張メソッドやイテレータ […]

[LINQ][C#] LINQ to XML でXMLの操作方法

LINQ to XML とは LINQ to XML は、.NET Framework プログラミング言語から XML を操作できるようにする、LINQ に対応したメモリ内 XML プログラミング インターフェイスです。 … LINQ to XML の最も重要な利点は、統合言語クエリ (LINQ) と統合されていることです。この統合により、メモリ内の XML ドキュメントに対するクエリ […]

[LINQ][C#] Aggregateの使い方(畳み込み, fold)

LINQのAggregateとは LINQを使った畳み込み(fold)の方法を紹介します。畳み込みにはAggregateを使います。Aggregateは「集約」や「集める」といった意味を持ちます。 Aggregateはどのような処理かというと、シーケンスにアキュムレータ関数を適用する物らしいです。ざっくり言うと データから1つの要素を取り出し … 取り出した要素と累積値(アキュムレータ […]

[LINQ][C#] UnionとConcatでデータを連結

LINQでデータを連結させる方法 LINQを使い複数のデータソースを連結させることができます。SQLでいうところのUNIONがLINQでもUnion、UNION ALLに該当するのがConcatです。 まずはUnionで配列を連結させてみます。 // データ string[] data1 = { "太郎", "次郎" }; string[] data2 = { "三郎", "四郎", "五郎" } […]

[LINQ][C#] Groupでデータをグループ化する

1つのキーでグループ化 LINQを使ってデータを特定のキー列でグループ化するにはGroupByを使います。 仮にBookというクラスを定義します。 class Book { public string Title { get; set; } public string Author { get; set; } public int Pages { get; set; } public int Ca […]