Я хочу List<string>
, содержащий все «выбранные» коды серии из этого DataGridView:
![enter image description here](https://i.stack.imgur.com/3Vxgu.png)
Я могу получить их как DataGridViewRow, например:
List<DataGridViewRow> selectedSeriesCodes =
gridSeriesList.Rows.Cast<DataGridViewRow>().Where(g =>
!string.IsNullOrEmpty(g.Cells[ListDataSource.gridColumn1].Value.ToString()) &&
Convert.ToBoolean(g.Cells[ListDataSource.gridColumn1].Value) == true).ToList();
Но я стремлюсь получить их как List<string>
исключительно для разделения интересов, поскольку я не хочу передавать элементы управления в бизнес-логику, чтобы упростить тестирование, и просто к сведению, это надстройка Excel vsto.
Я думал, что использование LINQ с типом anon поможет, но не скомпилируется, например:
List<string> selectedSeriesCodes = from x in gridSeriesList.Rows.Cast<DataGridViewRow>()
where (!string.IsNullOrEmpty(x.Cells[ListDataSource.gridColumn1].Value.ToString()) &&
Convert.ToBoolean(x.Cells[ListDataSource.gridColumn1].Value) == true)
select new { SeriesCode = x.Cells[ListDataSource.gridColumn2].ToString() };
Ошибка 'System.Collections.Generic.IEnumerable <AnonymousType#1>
' для'System.Collections.Generic.List <string>
'.Существует явное преобразование (вам не хватает приведения?)
Я уверен, что это возможно, иначе я просто использую цикл for.