C# 如何在不使用对象的情况下检查DataGridViewComboBoxColumn中的项?

C# 如何在不使用对象的情况下检查DataGridViewComboBoxColumn中的项?,c#,winforms,datagridview,datagridviewcombobox,C#,Winforms,Datagridview,Datagridviewcombobox,我需要检查并查看DataGridViewComboBoxColumn中是否存在某个值。问题是datagridviewcomboxcolumn.Items.Contains()想要一个对象,我给它一个long值。是否有一种方法/途径可以获取项目的字符串/长值 这就是我现在的逻辑(伪代码) 有很多方法可以做到这一点,这个简单而美丽的方法将为您带来好处: 字符串: yourDataGridViewComboBoxColumn.Items.Cast<string>().Contains("y

我需要检查并查看
DataGridViewComboBoxColumn
中是否存在某个值。问题是
datagridviewcomboxcolumn.Items.Contains()
想要一个对象,我给它一个
long
值。是否有一种方法/途径可以获取项目的字符串/长值

这就是我现在的逻辑(伪代码)


有很多方法可以做到这一点,这个简单而美丽的方法将为您带来好处:

字符串:

yourDataGridViewComboBoxColumn.Items.Cast<string>().Contains("your string value")
yourDataGridViewComboBoxColumn.Items.Cast<long>().Contains(yourLongValue)
例如,如果项目的类型为
Category
,类别具有
Id
Name
,并且您将其
Id
用作
ValueMember
,则可以使用如下代码:

 int value=10;
 yourDataGridViewComboBoxColumn.Items.Cast<Category>()
    .Select(x => x.Id)
    .Contains(value);
int值=10;
yourDataGridViewComboBoxColumn.Items.Cast()
.选择(x=>x.Id)
.包含(价值);
这里的关键点是使用,它可以帮助您将所有项强制转换为所需的类型


通过这种方式,您甚至可以在
Cast()
之后使用
Where()
搜索项目。我尝试了“Long”版本,但刚得到一个“InvalidCastException”。这可能是因为所有项目都不长。其中的项目类型是什么?我在Contains()中有一个列表,我正在运行该列表 portion@Hooplehead24使用
Cast
Select(x=>(long)x[“YourValueMemberColumn”])
发布代码很有用,但出于教育目的,最好还包括一些关于如何解决问题的解释。
 yourDataGridViewComboBoxColumn.Items.Cast<YourComplexType>()
    .Select(x => x.YourValueMemberField)
    .Contains(yourLongValue);
 int value=10;
 yourDataGridViewComboBoxColumn.Items.Cast<Category>()
    .Select(x => x.Id)
    .Contains(value);
    DataGridViewComboBoxCell cell = dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell;
    long value = 3434232;
    if (cell.Items.Contains(value)) MessageBox.Show("Yes");