2012-09-08 50 views
2

我想掃描一些序列號來只讀文本框。我創建的文本框列表,我無法弄清楚如何通過文本框名稱排序他們:對文本框對象列表進行排序

// This gets all the textboxnames ands makes an array of names and textboxes 
foreach (Control groupbox in this.Controls) 
{ 
    if (groupbox is GroupBox) 
    { 
     foreach (Control textbox in groupbox.Controls) 
     { 
      if (textbox is TextBox) 
      { 
       theTextBoxesList.Add((TextBox)textbox); 
       TextBoxNames.Add(textbox.Name); 

      } 
     } 
    } 
} 
TextBoxNames.Sort(); 

theTextBoxesList.Sort????? 

回答

1

嘗試

theTextBoxesList = theTextBoxesList.OrderBy(x => x.Name).toList(); 

它應該工作。

+1

更多信息,這個答案是比代碼沒有解釋一行多一點 - 這並不能使一個特別好的** **答案。嘗試在評論中加入一點點,以便OP瞭解發生了什麼。 – slugster

+0

感謝dbaseman你真棒,但似乎我可能會錯過別的東西,我試過了,它沒有排序。這個名字是不是在控制之下,groupbox和組件層? – carlosap

+0

感謝這一行:theTextBoxesList = theTextBoxesList.OrderBy(x => x.Name).toList(); 由於某種原因現在工作 – carlosap

0
theTextBoxesList.Sort((a,b) => String.Compare(a.S,b.S)); 
1

你必須提供比較,因爲TextBox不是原始類型:

theTextBoxesList.Sort(new Comparison<TextBox>(
    (tb1, tb2) => { return tb1.Name.CompareTo(tb1.Name); } 
)); 
+0

我可以比較TextBox的名稱和我的textboxNames列表嗎? – carlosap

+0

@carlosap我想你可以,但你爲什麼想?這是相同的信息,只是更難,因爲它在不同的地方。 – McGarnagle

2

我想整理文本框列表,LINQ查詢可以幫助你。使用OrderBy按升序對TextBox進行排序,或使用OrderByDescending按降序對TextBox進行排序。

升序排序:

theTextBoxesList = theTextBoxesList.OrderBy(x => x.Name).ToList(); 

降序排序:

theTextBoxesList = theTextBoxesList.OrderByDescending(x => x.Name).ToList(); 

這是否幫助?

有關數據排序的訪問http://msdn.microsoft.com/en-us/library/bb546145.aspx

+0

是的!它的工作,我真的需要學習更多關於LINQ查詢和lamdba謝謝你們 – carlosap

+0

@ carlosap訪問http://msdn.microsoft.com/en-us/vstudio/aa336746.aspx,你會發現下載鏈接的C#LINQ樣本。 –

相關問題