2013-07-02 29 views
0

我想對人名列表進行排序,但其他聯繫人列表也必須排序以保留相同的索引,以便聯繫人對應於名稱。 我有這個類:將2個不同的列表排序到相同的位置

 List<string> name = new List<string>(); 
     List<string> cellphone = new List<string>(); 

     public void setName(string value) 
     { 
      name.Add(value); 
     } 
     public void setCellphone(string value) 
     { 
      cellphone.Add(value); 
     } 

     public List<string> getNames() 
     { 
      return name; 
     } 
     public List<string> getCellphones() 
     { 
      return cellphone; 
     } 

現在我想有他們排序;

如:

表1: - 約瑟夫 - 安娜

表2: - 351912345678 - 351931234567

其結果必然是:

表1: - Anna - Joseph

表2: - 351931234567 - 351912345678

+0

爲什麼你不使用字典? – David

+1

爲什麼不做「人」課?如果您按名稱排列它們,則無需處理2個(或更多,如果您最終獲得更多數據類型)列表,它們將始終正確耦合。 –

回答

3

你應該使用單個類來保存一個人的信息。

我們的問題是:Zip + OrderBy + 2 *(Select + ToList)可以給你以相同的順序排序列表。例如:

var pairs = name.Zip(cellphone, (name, phone)=> new {name, phone}) 
    .OrderBy(item => item.name); 

name = pairs.Select(item => item.name).ToList(); 
cellphone = pairs.Select(item => item.phone).ToList(); 
+0

這只是命令的名稱,而不是聯繫人。 – Severiano

+0

@DiogoSeveriano,不知道我跟着 - 問題是重新排序2列表,所以第一個排序和第二個重新排序的索引匹配第一個,第二個列表不希望排序。 –

0

您應該使用一個字典,而不是2列表。看到這裏:http://www.dotnetperls.com/dictionary

+0

或者創建一個輕量級的結構體或者類來添加,如果有可能在關鍵中產生模糊。 –

+0

@Mike Cheel該框架已經有一個稱爲Lookup的結構。 http://msdn.microsoft.com/en-us/library/bb460184.aspx – phillip

相關問題