2016-05-08 10 views
1

私はこれに対する答えとしてStackOverflowを検索しましたが、明確な答えが見つかりません。プロパティ(例:.last_name)でテキストファイルをソート

私はその後、私は別のクラスのトーナメントをしました(はい、私は前にクラスを掲載しました)

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

このプレイヤークラスをしました。他のLast_nameの中からテキストファイルをソートしたい。私はIComparableを使ってファイルをソートする必要があるかもしれないという考えがあります。 ファイルは次のように構成されています。

1|Mariuss|Luka|Thygesen|1986-07-25|NAURU|NR 
+0

「テキストファイルをソートする」とはどういう意味ですか?あなたはテキストファイルからデータを読み込み、メモリ内の項目をソートする必要がありますか?または、ファイルの内容を変更したいですか? –

+0

Whoops ...データを読み込んで、Last_nameによってソートされたファイルを表示します –

+0

ファイルを読むための作業用コードがあると仮定すると、http://stackoverflow.com/questions/3309188/how-to-オブジェクトのリストをソートする –

答えて

1

まずソートするものはありません。ですから、今、あなたはソートする何かを持っている

 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); 
       } 
       //-----------------------------Add ----------------------- 
       Player newPlayer = new Player(fields[0], fields[1], fields[2], DateTime.Parse(fields[3]), fields[4], fields[5][0]); 
       players.Add(newPlayer); 
      } 
      par.Close(); 
     } 

機能

を以下のリストに項目を追加する必要があるクラス

static List<Player> players = new List<Player>(); 

次に追加します。ソート方法(またはCompareTo())を追加する

public void Sort() 
     { 
      players = players.OrderBy(x => new { x.last_name, x.first_name, x.middle_name }).ToList(); 
     } 
+0

権利はないと仮定?たとえば、last_name/first_nameでソートして表示します。 –

+0

最初にそれを行う必要があります。あなたはあなたの質問にあなたが必要としたことを言っていませんでした。 – Monset

+0

クラスのsortメソッドを使用するか、publicプロパティ 'players'をソートします。私はあなたが何をしているのかわからないので、あなたはメインの方法を投稿しませんでした。クラス内に静的アイテムプレーヤーを置き、メインメソッドでそれを持つ方が良いです。あなたが既にメインの選手のリストを持っている場合は、存在するリストをソートしてください。 – jdweng

関連する問題