2015-10-30 25 views
1

我正在减小C#.NET 4.0桌面应用程序的大小并提高效率,我遇到了一些代码,它根据其内容(字符串)找到组合框的项目并选择它作为默认值。组合框是动态填充的,因此该特定项目的索引可以更改,并且该字符串本身可以有变化的情况,因此搜索需要不区分大小写。这里的代码:有没有更简洁/优雅的方式来查找和选择一个特定的ComboBoxItem的内容?

foreach(ComboBoxItem item in myComboBox.Items) 
{ 
    if(item.Content.ToString().Equals("myString", StringComparison.CurrentCultureIgnoreCase)) 
    { 
     myComboBox.SelectedItem = item; 
    } 
} 

我只想知道是否有一个更快和/或更优雅的方式来做到这一点。比如,我可以使用一行来减少这三条线和/或加快搜索速度吗?

回答

0

既然你不知道字符串的情况下,但你知道字符串本身,我只是将使用LINQ:

myComboBox.SelectedItem = myComboBox.Items.Cast<ComboBoxItem>().FirstOrDefault(item => item.Content.ToString().Equals("myString", StringComparison.CurrentCultureIgnoreCase)); 
+0

这不会处理CurrentCultureIgnoreCase字符串比较 –

+0

@SimonMourier正如我所说的,提供你知道字符串的情况。他利用“myString”这个事实让我觉得这是一个公平的假设,但我仍然这样说。 – user3690202

+0

我感谢您的快速响应,user3690202,但myComboBox.Items没有FirstOrDefault的可能性。我错过别的东西来使用它吗?我已经包含了System.Linq。 – Meloviz

相关问题