我有一个特别具有某些特征的文件,但是,在这个文件中,在第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>
感谢您的帮助。
答案 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();