2

特にいくつかの特徴を持つファイルがありますが、このファイルの 30 列目に、連番ではなく 5 桁の数字があり、このファイルの行をこの数字に基づいて昇順に並べたいと思います。注文。

例えば:

sample sample sample1        00094
sample sample sample2        00001
sample sample sample3        00032
sample sample sample4        00491
sample sample sample5        00002
sample sample sample6        00010
sample sample sample7        00007

連番は00094、00001…

出力は次のとおりです。

sample sample sample2        00001
sample sample sample5        00002
sample sample sample7        00007
sample sample sample6        00010
sample sample sample3        00032
sample sample sample1        00094
sample sample sample4        00491

リスト内のすべてを再生し、バブル ソートを行うサイトマ エクストリーム ピッグを開発しました。それから、おそらく Linq を使用するか、別の方法でこれを行うより効率的な方法があるかどうか疑問に思います。

助けてくれてありがとう。

4

2 に答える 2

4
string[] lines = File.ReadAllLines(@"C:\temp\yourFile.txt");

var sotedLines = lines.Skip(1)
                      .Take(lines.Length - 2)
                      .OrderBy(getKeyFromLine)
                      .ToArray();

sortedLines.ForEach(Console.WriteLine);

列がスペースで区切られている場合は、次のgetKeyFromLine実装を使用します。

Func<string, int> getKeyFromLine = line => int.Parse(line.Split(' ')[30]);

行内の単に30 - 351 ベースのインデックス番号である場合は、次を使用します。

Func<string, int> getKeyFromLine = line => int.Parse(line.Substring(29, 5));
于 2013-06-11T14:33:42.310 に答える