[英]How can I sort the file txt line 5000000?
我有一个500000行的无序文件,其信息和日期如下:
for instance desired Result
------------ ---------------
723,80 1,4
14,50 1,5
723,2 10,8
1,5 14,50
10,8 723,2
1,4 723,80
现在我该如何实现这样的事情呢?
我已经尝试过sortedList和sorteddictionary方法但是没有办法在列表中实现新值,因为列表中有一些重复值。 如果你建议最好的方法,我会很感激。
还有一件事,我已经看到了这个问题,但是当我使用File时,这个问题使用了这个类!
var result = File.ReadAllLines("...filepath...")
.Select(line => line.Split(','))
.Select(parts => new
{
V1 = int.Parse(parts[0]),
V2 = int.Parse(parts[1])
})
.OrderBy(v => v.V1)
.ThenBy(v => v.V2)
.ToList();
默认情况下,将正确处理重复项。 如果你想删除它们,添加.Distinct()
之后的某个地方,例如ReadAllLines
。
您需要将文件解析为由类定义的对象。 一旦它在对象中,您就可以开始对其进行排序。
public class myObject
{
public int x { get; set; }
public int y { get; set; }
}
现在,一旦将文件解析为对象列表,您应该可以执行以下操作:
var myList = new List<myObject>(); //obviously, you should have parsed the file into the list.
var sortedList = myList.OrderBy(l => l.x).ThenBy(l => l.y).ToList();
首先,对每一行进行排序,使它们处于正确的顺序(例如[723,80] - > [80,723]
然后使用这样的比较对所有行进行排序:
int Compare(Tuple<int,int> lhs, Tuple<int,int> rhs)
{
int res = lhs.Item1.CompareTo(rhs.Item1)
if(res == 0) res=lhs.Item2.CompareTo(rhs.Item2);
return res;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.