1

「ブロック」形式のデータを含むテキスト ファイルがあります。

source : source location
filename : somefile.txt
vendor : somevendor
version : xx.xx.xxx

source : source location2
filename : somefile2.txt
vendor : somevendor2
version : yy.yy.yyy

Linq を使用してこのデータのクエリを実行できますか? 私はlinqを使用してテキストファイルからデータ行を何度もクエリしましたが、上記のようなデータの「ブロック」は決して使用しませんでした。入力していただきありがとうございます。

4

1 に答える 1

1

はい、LINQ を使用できます。大きなファイルがある場合、このアプローチはあまり最適化されません。データの取得方法は次のとおりです。

var lines = File.ReadLines("C:\\text.txt")
                .Where(line => !string.IsNullOrWhiteSpace(line))
                .ToList();

for (int i = 0; i < lines.Count; i += 4)
{
    var location = lines[i].Split(':')[1];
    var fileName = lines[i + 1].Split(':')[1];
    var vendor = lines[i + 2].Split(':')[1];
    var version = lines[i + 3].Split(':')[1];
}

LINQ を使用するバージョン:

var result = Enumerable.Range(0, lines.Count()/4).Select(i => new {
        location = lines[4*i].Split(':')[1];
        fileName = lines[4*i + 1].Split(':')[1];
        vendor = lines[4*i + 2].Split(':')[1];
        version = lines[4*i + 3].Split(':')[1];
    });
于 2012-10-17T16:39:43.310 に答える