C# 对文本文件的数据进行排序,并将其写入c语言中的另一个文本文件中#

C# 对文本文件的数据进行排序,并将其写入c语言中的另一个文本文件中#,c#,C#,我想对文本文件中的数据进行排序,并将其保存到另一个文本文件中 这是我的文本文件“employee.txt”,我想用“employee code”对数据进行排序 员工代码:107 名字:斯瓦普尼尔 姓氏:dehjhja 电话:6727672 员工代码:106 名字:fhsgbf 姓氏:dehjhja 电话:909888 员工代码:102 名字:xyz 姓氏:dehjhja 电话:098778 您需要将数据导入可排序的实体,调用集合的排序方法(即列表),然后将数据导出为所需的任何格式 对于导入/

我想对文本文件中的数据进行排序,并将其保存到另一个文本文件中

这是我的文本文件“employee.txt”,我想用“employee code”对数据进行排序

员工代码:107 名字:斯瓦普尼尔 姓氏:dehjhja 电话:6727672


员工代码:106 名字:fhsgbf 姓氏:dehjhja 电话:909888


员工代码:102 名字:xyz 姓氏:dehjhja 电话:098778



您需要将数据导入可排序的实体,调用集合的排序方法(即
列表
),然后将数据导出为所需的任何格式

对于导入/导出内容,我推荐FileHelpers lib

对于排序内容,在实体上实现
IComparable

iCompact的示例:

using System;
using System.Collections;
public class Person : IComparable<Person>
{
    #region Private Members
    private string _firstname;
    private string _lastname;
    private int _age;
    #endregion
    #region Properties
    public string Firstname
    {
        get { return _firstname; }
        set { _firstname = value; }
    }
    public string Lastname
    {
        get { return _lastname; }
        set { _lastname = value; }
    }
    public int Age
    {
        get { return _age; }
        set { _age = value; }
    }
    #endregion
    #region Contructors
    public Person (string firstname, string lastname, int age)
    {
        _firstname = firstname;
        _lastname = lastname;
        _age = age;
    }
    #endregion
    public override string ToString()
    {
        return String.Format(“{0} {1}, Age = {2}“, _firstname,
             _lastname, _age.ToString());
    }
    #region IComparable Members
    public int CompareTo(Person obj)
    {
        return _firstname.CompareTo(p2.Firstname);
    }
    #endregion
}
使用系统;
使用系统集合;
公共类人物:i可比较
{
#区域私人成员
私有字符串_firstname;
私有字符串_lastname;
私人互联网;
#端区
#区域属性
公共字符串名
{
获取{return\u firstname;}
设置{u firstname=value;}
}
公共字符串姓氏
{
获取{return\u lastname;}
设置{u lastname=value;}
}
公共信息
{
获取{return\u age;}
设置{u age=value;}
}
#端区
#区域构造函数
公众人物(字符串名、字符串名、整数)
{
_名字=名字;
_lastname=lastname;
_年龄=年龄;
}
#端区
公共重写字符串ToString()
{
返回String.Format(“{0}{1},Age={2}”,_firstname,
_姓氏,_age.ToString());
}
#区域i可比较成员
公共内部比较(人员对象)
{
返回_firstname.CompareTo(p2.firstname);
}
#端区
}

对于文件的读/写,您可以简单地使用将行读入字符串数组并将其写回文件。这些函数将处理文件的所有打开/关闭操作,这样您就不必这样做

要处理排序,我们可以使用in-LINQ和静态帮助函数
GetEmployeeCode
来获取EmployeeCode。我们可以如下定义帮助函数:

public static int GetEmployeeCode(string line)
{
    // Get the substring starting after "Employee code:"
    // ... and stopping at the first space.
    string employeeCode = line.Substring(14).Split(' ')[0];
    int code;
    Int32.TryParse(employeeCode, out code);
    return code;
}
然后,以下代码将按EmployeeCode按升序对文件中的所有行进行排序,然后将它们写入新文件:

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

// Sort the rows in lines by EmployeeCode
lines = (from line in lines
        orderby GetEmployeeCode(line) ascending
        select line).ToArray();

File.WriteAllLines(@"C:\sorted.txt", lines);

只有当所有代码都是三位数字时才有效。否则,employee
22
将放在employee
111
之后。这一点很好……我将更新上面的内容以将其考虑在内。