C# 是否有一种更简洁/优雅的方法可以通过内容查找和选择特定的ComboBoxItem?

C# 是否有一种更简洁/优雅的方法可以通过内容查找和选择特定的ComboBoxItem?,c#,.net,wpf,foreach,combobox,C#,.net,Wpf,Foreach,Combobox,我正在缩小C#.NET 4.0桌面应用程序的大小并提高其效率,我遇到了一些代码,这些代码根据组合框的内容(字符串)查找组合框的项并将其选择为默认项。组合框是动态填充的,因此该特定项的索引可以更改,字符串本身的大小写也可以更改,因此搜索需要不区分大小写。代码如下: foreach( ComboBoxItem item in myComboBox.Items ) { if( item.Content.ToString().Equals( "myString", StringCompariso

我正在缩小C#.NET 4.0桌面应用程序的大小并提高其效率,我遇到了一些代码,这些代码根据组合框的内容(字符串)查找组合框的项并将其选择为默认项。组合框是动态填充的,因此该特定项的索引可以更改,字符串本身的大小写也可以更改,因此搜索需要不区分大小写。代码如下:

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

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

既然您不知道字符串的大小写,但您知道字符串本身,我就使用linq:

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

因为您不知道字符串的大小写,但您知道字符串本身,所以我只使用linq:

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

这不会处理CurrentCultureIgnorCase字符串comparison@SimonMourier正如我所说,只要你知道字符串的情况。他将“myString”大写的事实让我觉得这是一个公平的假设,但我还是说了出来。感谢您的快速响应,user3690202,但我的MymboBox。Items不可能出现FirstOrDefault。我是不是错过了其他的东西?我已经包括System.Linq.@Lazovis-我想您已经使用System.Collections.Generic了?应用程序针对的是哪个版本的.NET?@Lazovis-抱歉,我错过了其中的Cast()调用-现在应该可以为您使用了。这将无法处理CurrentCultureInogoreCase字符串comparison@SimonMourier正如我所说,只要你知道字符串的情况。他将“myString”大写的事实让我觉得这是一个公平的假设,但我还是说了出来。感谢您的快速响应,user3690202,但我的MymboBox。Items不可能出现FirstOrDefault。我是不是错过了其他的东西?我已经包括System.Linq.@Lazovis-我想您已经使用System.Collections.Generic了?该应用程序针对的是哪个版本的.NET?@Lazovis-抱歉,我错过了那里的一个Cast()调用-现在应该适合你了。