LINQ と文字列 (C#)
文字列やそのコレクションは、LINQ を使って照会したり変換したりすることができます。 特に、テキスト ファイル内の半構造化されたデータでその利便性が発揮されます。 LINQ クエリは、従来の文字列関数や正規表現と組み合わせることができます。 たとえば、String.Split または Regex.Split メソッドを使用して、文字列の配列を作成し、その後で LINQ を使用してクエリを実行したり変更したりすることができます。 LINQ クエリの where
句で Regex.IsMatch メソッドを使用できます。 LINQ を使用して、正規表現によって返される MatchCollection の結果に対してクエリを実行したり変更したりすることができます。
このセクションで説明する手法を使えば、半構造化されたテキスト データを XML に変換することもできます。 詳細については、「CSV ファイルから XML を生成する方法」を参照してください。
このセクションの例は、次の 2 つのカテゴリに分かれています。
テキスト ブロックに対するクエリ
String.Split メソッドまたは Regex.Split メソッドを使用して、テキスト ブロックをクエリ可能な小さな文字列の配列に分割することによって、テキスト ブロックのクエリ、分析、および変更を実行できます。 単語や文、段落、ページなどの単位にソース テキストを分割できるほか、クエリ内で必要であれば、さらに細かく分割することもできます。
文字列での単語の出現回数をカウントする方法 (LINQ) (C#)
テキストに対する単純なクエリを LINQ で行う方法が紹介されています。指定されたワードのセットを含む文章を照会する方法 (LINQ) (C#)
区切りを指定してテキスト ファイルを分割する方法やその各構成要素に対してクエリを実行する方法が紹介されています。
-
文字列がクエリ可能型であることを実証します。
-
LINQ クエリで正規表現を使い、フィルター処理されたクエリ結果に対して複雑なパターン マッチを行う方法が紹介されています。
半構造化されたテキスト形式データに対するクエリ
テキスト ファイルにはさまざまな種類がありますが、タブ区切りファイルやコンマ区切りファイル、固定長行など同様の形式を持った一連の行で構成されていることは少なくありません。 そのようなテキスト ファイルをメモリに読み込んだ後、LINQ を使って、必要な行を照会したり編集したりすることができます。 複数ソースからのデータを組み合わせる作業も LINQ クエリなら簡単に行うことができます。
2 つのリストの差集合を見つける方法 (LINQ) (C#)
ある特定のリストには存在しているものの、それ以外には存在しない文字列をすべて探す方法が紹介されています。
任意のワードまたはフィールドを基準にテキスト データの並べ替えまたはフィルター処理を実行する方法 (LINQ) (C#)
単語やフィールドに基づいてテキスト行を並べ替える方法が紹介されています。
区切りファイルのフィールドの順序を変更する方法 (LINQ) (C#)
.csv ファイルの行に含まれるフィールドを並べ替える方法が紹介されています。
文字列コレクションを結合および比較する方法 (LINQ) (C#)
文字列リストをさまざまな方法で結合する方法が紹介されています。
複数のソースからオブジェクト コレクションにデータを設定する方法 (LINQ) (C#)
複数のテキスト ファイルをデータ ソースとしてオブジェクトのコレクションを作成する方法が紹介されています。
異種ファイルのコンテンツを結合する方法 (LINQ) (C#)
2 つのリストに含まれる文字列を、一致するキーを使って 1 つの文字列に結合する方法が紹介されています。
グループを使用して 1 つのファイルを複数のファイルに分割する方法 (LINQ) (C#)
1 つのファイルをデータ ソースとして新しいファイルを作成する方法が紹介されています。
CSV テキスト ファイルの列値を計算する方法 (LINQ) (C#)
.csv ファイルでテキスト データに対して数学的計算を実行する方法が紹介されています。