У меня есть подпрограмма, которая преобразует все данные в DataGridView
в соответствующие DataTable
.Я хочу расширить этот метод, чтобы включить возможность конвертировать только выбранный диапазон DataGridView
.Я могу четко сделать это, используя базовую логику if (bIsSelection) /*Do stuff*/ else /*Do other stuff*/
, но я хотел бы использовать дженерики здесь.Проблема состоит в том, что полный диапазон DataGridView
равен DataGridViewColumnCollection
, а выбранный диапазон будет DataGridViewSelectedColumnCollection
, и C # не похоже на какое-либо преобразование между ними или допускает неявную типизацию в случае обобщенных типов.
Первая часть моего кода была
public static DataTable BuildDataSetFromDgv(DataGridView _dataGridView,
string strTabName)
{
DataTable dt = new DataTable();
dt.TableName = strTabName;
foreach (DataGridViewColumn col in _dataGridView.Columns)
dt.Columns.Add(col.DataPropertyName, col.ValueType);
, и я попытался
public static DataTable BuildDataSetFromDgv<T>(DataGridView _dataGridView,
string strTabName, ICollection<T> _columnColl, ICollection<T> _rowColl)
{
DataTable dt = new DataTable();
dt.TableName = strTabName;
//foreach (DataGridViewColumn col in _dataGridView.Columns)
foreach (DataGridViewColumn col in _columnColl)
dt.Columns.Add(col.DataPropertyName, col.ValueType);
, которая не работает из-за неявного преобразования, и изменил _columnColl
на _columnColl as DataGridView[Selected]ColumnCollection
побеждает цель.
Как мне заставить эту работу с дженериками в этом случае?
Спасибо за ваше время.