Кастинг и добавление списка в одну строку - PullRequest
0 голосов
/ 24 сентября 2019

Можно ли написать следующий код в одной строке:

var dt = new DataTable();
dt.Load((IDataReader)obj);
dataTables.Add(dt);

, где dataTables - это список:

IList<DataTable> dataTables = new List<DataTable>();

Я пытался следовать, но это не такработа;

dataTables.Add(new DataTable().Load((IDataReader)obj));

Ошибка (что очень понятно):

Невозможно преобразовать void в System.Data.DataTable

1 Ответ

1 голос
/ 24 сентября 2019

Как говорит ошибка, метод Load возвращает void, поэтому вы не можете привести его обратно к DataTable.

Но вы можете написать свой собственный метод расширения LoadReader, который возвращает DataTable:

static class Extensions
{
    public DataTable LoadReader(this DataTable dt, IDataReader reader)
    {
        dt.Load(reader);
        return dt;
    }
}

, а затем используйте его как:

dataTables.Add(new DataTable().LoadReader((IDataReader)obj));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...