如何在不使用对象的情况下检查 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,类别有 IdName,并且您将其 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");