Linq

C#

[C#] リストやコレクションを辞書にやセット変換する方法 [ToDictionary][ToHashSet]

Please input markdown here## Linq でコレクションを辞書やハッシュセットに変換したい リストなどのコレクションに格納されたデータを辞書やハッシュテーブルに変換したい場合、Linq の ToDictionary や ToHashSet が使用できます。 ToDictionary で辞書型に変換 Enumerable.ToDictionary メソッド (System. […]

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

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

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

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

C#

[C#] 配列をランダムソート(シャッフル)する方法

ランダムな配列 [C#] 連番配列と全要素同値の配列の初期化方法 上記リンク先で配列の生成方法についてまとめています。今回は配列をランダムな順に並び替える(つまりシャッフルする)方法をまとめます。配列を扱っていますが、実際はコレクション要素(Listなど)であれば同様に処理できます。 配列のランダムソート(シャッフル) 任意の配列について、ランダムな順にソートする方法です。 // シャッフルするも […]

[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 […]