Есть ли какое-либо выражение LINQ для преобразования Datatable в словарь - PullRequest
3 голосов
/ 19 мая 2011

У меня есть несколько случаев, когда я делаю запрос, получаю таблицу данных и преобразовываю ее в:

 Dictionary<string, string>

или

 Dictionary<int, int>

или

 Dictionary<string, [Someobject]>

Я мог бы создать свою собственную функцию с помощью цикла, но я хотел посмотреть, существует ли какой-либо LINQ-способ преобразования данных в словарь и просто передачи 2-х лямбд для ключа и значения (аналогично тому, как вы можете сделать с преобразованием IEnumerableв словарь

Ответы [ 2 ]

9 голосов
/ 19 мая 2011

Вы можете использовать AsEnumerable & ToDictionary :

Например, если вам нужен словарь, в котором ключи от col1 и значения от col2:

table.AsEnumerable()
     .ToDictionary<int, string>(row => row.Field<int>(col1),
                                row => row.Field<string>(col2));
4 голосов
/ 19 мая 2011

Linq поставляется с ToDictionary методом расширения, который звучит так, как вы описываете.

Edit

Что касается использования ToDictionary с DataTable: я неПочему бы и нет.

DataTable dt = GetMyDataTable();
return dt.Rows.Cast<DataRow>().ToDictionary(r => r["KeyColumn"], r => r["ValueColumn"]);

Вам нужен приведенный состав, потому что DataTable.Rows просто IEnumerable, а не IEnumerable<DataRow>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...