Как я могу проверить элемент в 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");
Другие вопросы по тегам