2016-11-29 29 views
-1

我有一个任务,我必须按名称排序电话列表。我有以下代码。我知道这是一团糟,有一些东西缺失,但这是我现在得到的。有些变数是葡萄牙语的,但我会尽我所能让它变得可以理解。这是我不能使用LINQ的或列表在C中排序电话列表#

static void Main(string[] args) 
{ 
    string file= "nomes.txt"; 
    string[] text = File.ReadAllLines(file); 

    // Reads line by line 
    for (int i = 0; i < text.Length; i++) 
    { 
     string line = text[i]; 

     for (int j = 0; j < line.Length; j++) 
     { 
      if (char.IsWhiteSpace (line [j-1]) == true) 
       { 
        string[] palavra = line.Split(','); 

        if (char.IsDigit(line [j]) == true) 
        { 
         string[] nr = line.Split('-'); 
         Console.WriteLine(line); 
        } 
       } 
     } 
    } 

    Console.ReadKey(); 
} 

文件看起来像这样不同的情况:

Joaquim Lopes da Silva 932 000 999 
Maria da Conceição Granja 91 384 75 34 
Herculano Lopes Vieira 253334556 

预期输出:

Silva, Joaquim Lopes da - 932 000 999 
Granja, Maria da Conceição - 913 847 534 
Vieira, Herculano Lopes - 253 334 556 
+1

和你的txt文件看怎么样? –

+0

什么是posletra? – Sajeetharan

+0

检查编辑。 Posletra代表每个字母的位置,它的评论有 –

回答

0

首先读取所有数据到列表<项目>:

class Item { 
    public string First; 
    public string Second; 
    ... 
} 
var items = ReadFromFile(); 

然后使用LINQ:

var sortedItems = items.OrderBy(entry, entry.First); 

其中entry.First是串字段“席尔瓦”或“格兰哈”等

+0

我仍然在基础知识,所以我应该'不要使用任何advaced的东西。只有数组,方法和循环。另外我想知道我的代码是否适合它。 –

+0

这是先进的?这是相当原始的。 – David

+0

@HenriqueGuimarães,也许你会发现更多的数组友好:var sortedItems = items.OrderBy(entry,entry.First).ToArray(); –