2015-11-01 71 views
-4

之類的標題這樣閱讀txt文件,並對其進行排序

檔次txt文件是0〜100

樣本:

名稱,等級

名稱,等級

名稱,等級

我必須將它與等級

是解決它的方法是將它們拆分成數組然後進行排序?

我必須將文件加載到字符串這樣

char[] spli = { ' ', ',', '\t' }; 
     string line; 
     string[] sline; 

     StreamReader file = new StreamReader(textBox1.Text,Encoding.Default); 
     line = file.ReadToEnd(); 
     sline = line.Split(spli); 
     foreach (string item in sline) 
     { 
      listBox1.Items.Add(item); 

     } 

PLZ

+1

這是一個檔次,或多個檔次後的檔案名稱?如果有多個等級,你想根據直徑進行分類,還是什麼? – Matyas

+0

你可以創建一個簡單的對象來保存文本文件每一行的數據元素。在閱讀文本文件時,請構建這些對象的列表。然後,只需使用該列表中的LINQ'.OrderBy()'按需要的字段進行排序。 – David

回答

0

當你從文本文件中讀取數據並解析它,總是進行驗證。你永遠不知道文件中的數據。看我的代碼。

class MyListUser 
    { 
     public string Name; 
     public int Grades; 
    } 

private List<MyListUser> ReadUserFile() 
     { 
      List<MyListUser> lstUser; 
      string[] sMyData = File.ReadAllLines("Myfile.txt"); 
      if (sMyData != null) 
      { 
       MyListUser oTmp; 
       string[] sTmp; 
       lstUser = new List<MyListUser>(); 
       for (int i = 0; i < sMyData.GetLength(0); i++) 
       { 
        sTmp = Regex.Split(sMyData[i], ","); 
        //need some validation 
        if (sTmp != null && sTmp.GetLength(0) > 1) 
        { 
         oTmp = new MyListUser(); 
         oTmp.Name = sTmp[0]; 
         int.TryParse(sTmp[1], out oTmp.Grades); 
         lstUser.Add(oTmp); 
        } 
       } 
       return lstUser.OrderBy(o => o.Grades).ToList(); 
      } 
      return null; 
     } 
+0

如何輸出雖然TEXTBOX 感謝您的代碼,它非常有幫助 –

+0

你想在文本框中放什麼?我的意思是哪種格式? – Jigneshk

+0

喜歡樣本的等級和名稱 –

0

下面的代碼假定grades在文本文件中只是一個數字的一​​個字符串表示。您可以使用LINQ對它進行排序 - 在,每行第一次分裂,然後解析一個數字的字符串表示和OrderBy它:

var sorted = File.ReadLines(textBox1.Text) 
        .OrderBy(line => Int32.Parse(line.Split(',')[1])) 
        .ToList(); 

如果gradesdouble

var sorted = File.ReadLines(textBox1.Text) 
       .OrderBy(line => Double.Parse(line.Split(',')[1], CultureInfo.InvariantCulture)) 
       .ToList();