【发布时间】:2016-05-08 11:06:22
【问题描述】:
我在 StackOverflow 上搜索过这个问题的答案,但找不到明确的答案。
我有这个播放器课程(是的,我之前发布过课程)
namespace Tennis_Match
{
class Player
{
private string first_name;
private string middle_name;
private string last_name;
private DateTime dob;
private string nat;
private char gender;
public string First_name { get { return first_name; } set { first_name = value; } }
public string Middle_name { get {return middle_name; } set { middle_name = value; } }
public string Last_name { get { return last_name; } set { last_name = value; } }
public DateTime Dob { get { return dob; } set { dob = value; } }
public string Nat { get { return nat; } set { nat = value; } }
public char Gender { get { return gender; } set { gender = value; } }
public Player(string first_name, string last_name, string middle_name, DateTime dob, string nat, char gender)
{
this.first_name = first_name;
this.last_name = last_name;
this.middle_name = middle_name;
this.dob = dob;
this.nat = nat;
this.gender = gender;
}
public override string ToString()
{
return first_name + " " + middle_name + " " + last_name + " " + dob + " "+ nat + " " + gender;
}
public static int CalculateAge(DateTime dob)
{
int years = DateTime.Now.Year - dob.Year;
if ((dob.Month > DateTime.Now.Month) || (dob.Month == DateTime.Now.Month && dob.Day > DateTime.Now.Day))
years--;
return years;
}
private List<string> content = new List<string>();
public string FileName { get; set; }
public string Delimiter { get; set; }
private void Load()
{
TextFieldParser par = new TextFieldParser(FileName);
par.TextFieldType = FieldType.Delimited;
par.SetDelimiters(Delimiter);
while (!par.EndOfData)
{
string[] fields = par.ReadFields();
foreach (string field in fields)
{
Console.WriteLine(field);
}
}
par.Close();
}
public void RunReadCSVFile(string fn, string delim = "|")
{
FileName = fn;
Delimiter = delim;
Load();
}
public string GetLine(string fileName, int line)
{
using (var sr = new StreamReader(fileName))
{
for (int i = 1; i < line; i++)
sr.ReadLine();
return sr.ReadLine();
}
}
}
}
然后我还有一个班级锦标赛。我想按其他姓氏对文本文件进行排序。我有一个想法,我可能需要使用IComparable 对文件进行排序。
该文件的结构如下:
1|Mariuss|Luka|Thygesen|1986-07-25|NAURU|NR
【问题讨论】:
-
“对文本文件进行排序”是什么意思?您想从文本文件中读取数据并对内存中的项目进行排序?或者您想更改文件的内容?
-
哎呀...读取数据然后显示按 Last_name 排序的文件
-
假设你有工作代码来读取文件,那么它就是stackoverflow.com/questions/3309188/…的副本
-
没有“排序文件”的可能性。您必须读取数据,以@Evan 的身份在内存中排序并最终保存到文件排序数据。要在内存中排序,您可以在文件读取期间使用 Linq 或 SortedList。
-
我自己做了一些工作,并尝试这样做:
List<string> lines = File.ReadLines(@"C:\Users\Johannes\Downloads\BAIT\GOOP\Eksamen\MalePlayer.txt").ToList(); public List<Player> GetPlayerList<T>(IEnumerable<Player> lines, Func<Player, T> Last_name) { return (from Player in lines orderby Last_name(Player) select Player).ToList(); } svm var playersOrderedByLastName = GetPlayerList(lines, x => x.Last_name);但我得到一个错误,所以我认为这是不对的
标签: c# arrays sorting icomparable