如何在不使用对象的情况下检查 DataGridViewComboBoxColumn 中的项目?
How can I check for an item in a DataGridViewComboBoxColumn without using an object?
我需要检查 DataGridViewComboBoxColumn
中是否存在特定值。问题是 DataGridViewComboBoxColumn.Items.Contains()
想要一个对象,我给它一个 long
值。有没有method/way我可以得到string/long价值的物品?
这就是我现在的逻辑(伪代码)。
if (DataGridViewComboBoxColumn.Items.Contains(long))
{
//Do Stuff
}
有很多方法可以做到这一点,这个简单而漂亮的方法可以满足您的需要:
字符串:
yourDataGridViewComboBoxColumn.Items.Cast<string>().Contains("your string value")
长:
yourDataGridViewComboBoxColumn.Items.Cast<long>().Contains(yourLongValue)
复杂对象:
如果您的组合框列中的 Items
很复杂,您应该这样做:
yourDataGridViewComboBoxColumn.Items.Cast<YourComplexType>()
.Select(x => x.YourValueMemberField)
.Contains(yourLongValue);
例如,如果项目的类型为 Category
,类别有 Id
和 Name
,并且您将其 Id
用作 ValueMember
,则可以使用代码如下:
int value=10;
yourDataGridViewComboBoxColumn.Items.Cast<Category>()
.Select(x => x.Id)
.Contains(value);
这里的关键点是使用 Cast<T>
帮助您将所有项目转换为所需的类型。
这样您甚至可以在 Cast<T>()
之后使用 Where()
搜索项目
DataGridViewComboBoxCell cell = dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell;
long value = 3434232;
if (cell.Items.Contains(value)) MessageBox.Show("Yes");
我需要检查 DataGridViewComboBoxColumn
中是否存在特定值。问题是 DataGridViewComboBoxColumn.Items.Contains()
想要一个对象,我给它一个 long
值。有没有method/way我可以得到string/long价值的物品?
这就是我现在的逻辑(伪代码)。
if (DataGridViewComboBoxColumn.Items.Contains(long))
{
//Do Stuff
}
有很多方法可以做到这一点,这个简单而漂亮的方法可以满足您的需要:
字符串:
yourDataGridViewComboBoxColumn.Items.Cast<string>().Contains("your string value")
长:
yourDataGridViewComboBoxColumn.Items.Cast<long>().Contains(yourLongValue)
复杂对象:
如果您的组合框列中的 Items
很复杂,您应该这样做:
yourDataGridViewComboBoxColumn.Items.Cast<YourComplexType>()
.Select(x => x.YourValueMemberField)
.Contains(yourLongValue);
例如,如果项目的类型为 Category
,类别有 Id
和 Name
,并且您将其 Id
用作 ValueMember
,则可以使用代码如下:
int value=10;
yourDataGridViewComboBoxColumn.Items.Cast<Category>()
.Select(x => x.Id)
.Contains(value);
这里的关键点是使用 Cast<T>
帮助您将所有项目转换为所需的类型。
这样您甚至可以在 Cast<T>()
Where()
搜索项目
DataGridViewComboBoxCell cell = dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell;
long value = 3434232;
if (cell.Items.Contains(value)) MessageBox.Show("Yes");