2015-11-01 73 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();