2012-09-08 40 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样本。 –

相关问题