根据内容对文件内容进行排序

时间:2013-06-11 14:29:14

标签: c# linq

我有一个特别具有某些特征的文件,但是,在这个文件中,在第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,甚至是不同的方式。 / p>

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

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 - 35一个基于索引的数字,那么使用

Func<string, int> getKeyFromLine = line => int.Parse(line.Substring(29, 5));

答案 1 :(得分:1)

怎么样:

string[] lines = File.ReadAllLines(@"text.txt");
var result = lines.AsParallel()
    .OrderBy(s => s.Split(' ').Last())
    .ToList();