Как я могу проверить элемент в DataGridViewComboBoxColumn без использования объекта?
Мне нужно проверить и посмотреть, присутствует ли определенное значение в DataGridViewComboBoxColumn
, Проблема в том, что DataGridViewComboBoxColumn.Items.Contains()
хочет объект, и я даю ему long
значение. Есть ли способ / способ, которым я могу получить строковое / длинное значение Предметов?
Вот как сейчас выглядит моя логика (псевдокод).
if (DataGridViewComboBoxColumn.Items.Contains(long))
{
//Do Stuff
}
2 ответа
Есть много способов сделать это, этот простой и красивый способ поможет вам:
Строка:
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>
это поможет вам привести все предметы к желаемому типу.
Таким образом, вы можете даже искать в элементах, используя Where()
после Cast<T>()
DataGridViewComboBoxCell cell = dataGridView1.Rows[0].Cells[0] as DataGridViewComboBoxCell;
long value = 3434232;
if (cell.Items.Contains(value)) MessageBox.Show("Yes");