1) Пытаюсь сделать поиск в DataGridView с помощью операций LINQ:
var find = UsersDataGridView.Rows.Cast<DataGridViewRow>()
.FirstOrDefault(x => x.Cells[cbFilterSearch.SelectedIndex].Value.ToString().Contains(tbSearch.Text));
if (find != null)
{
find.DefaultCellStyle.BackColor = Color.Red;
}
Раскрашивает только одну строку в красный цвет, хотя нахождений больше. Как исправить?
2) Возможно ли переделать данный код на LINQ?
for (int i = 0; i < UsersDataGridView.RowCount; i++)
UsersDataGridView.Rows[i].DefaultCellStyle.BackColor = Color.White;
Раскрашивает только одну строку в красный цвет по причине того, что Вы берете FirstOrDefault - это означает, что в результате получим либо одну строку, либо null если элемент не найден (значение по умолчанию Default).
Поэтому немного модифицируем Ваш код следующим образом:
var indexFilter = cbFilterSearch.SelectedIndex; // вынес для удобства
var findResult = UsersDataGridView.Rows.Cast<DataGridViewRow>()
.Where(x => x.Cells[indexFilter].Value.ToString().Contains(tbSearch.Text)).ToList();
// меняем цвет так (по Вашему примеру)
for (int index = 0; index < findResult.Count; index++)
{
findResult[index].DefaultCellStyle.BackColor = Color.Red;
}
// или меняем цвет вот так (немного удобнее)
foreach (DataGridViewRow row in findResult)
{
row.DefaultCellStyle.BackColor = Color.Red;
}
Попросту заменили FirstOrDefault на Where(predicate).ToList() и вместо одного элемента - получили коллекцию элементов, удовлетворяющих условию поиска.
По поводу второго вопроса, можно предложить такой вариант LINQ:
UsersDataGridView.Rows
.Cast<DataGridViewRow>()
.ToList()
.ForEach(x => x.DefaultCellStyle.BackColor = Color.White);
Преобразуем элемент Rows из типа DataGridViewRowCollection в список элементов DataGridViewRow и в цикле ForEach меняем значение BackColor у каждого элемента коллекции.
FirstOrDefault — возвращает первый элемент коллекции или значение по-умолчанию, если коллекция пуста. Для вашей задачи подходящим будет метод Where который фильтрует коллекцию по предикату.
Можно задать цвет всем ячейкам сразу
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники