【问题标题】:How can I sort the file txt line 5000000?如何对文件 txt 行 5000000 进行排序?
【发布时间】:2014-01-06 19:35:56
【问题描述】:

我有一个 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 时使用了这个类!

C# List<> Sort by x then y

【问题讨论】:

  • 使用您发布的链接有什么问题?
  • 我不太明白你需要做什么。您显然需要对这个列表进行排序,但模式是什么..?
  • 是的,我想对文件里面的数据进行排序,但是有重复值需要考虑。
  • 您可以使用您链接的内容。将您的文件输入班级,然后将它们排序后写回。如果这是您想要的结果。
  • 您要保留重复项还是将它们合理化为一行?

标签: c# sorting


【解决方案1】:
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 之后。

【讨论】:

    【解决方案2】:

    您需要将文件解析为由类定义的对象。一旦它在对象中,您就可以开始对其进行排序了。

    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();
    

    【讨论】:

      【解决方案3】:

      首先,对每一行进行排序,使它们的顺序正确(例如 [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;
      }
      

      【讨论】:

        猜你喜欢
        • 2012-05-23
        • 2018-11-20
        • 2019-11-19
        • 2020-08-04
        • 1970-01-01
        • 2020-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多