Linq

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