Me gustaría convertir una DataTable a IEnumerable<>
de Dictionary<string, object>
. He intentado lo siguiente consulta LINQ,¿Cómo puedo convertir un DataTable a un IEnumerable <Dictionary <string, object >>?
from DataRow row in ds.Tables[0].AsEnumerable()
let rowDictionary = new Dictionary<string, object>()
from DataColumn column in row.Table.Columns.Cast<DataColumn>()
select rowDictionary.Add(column.ColumnName, row[column]).ToArray();
pero me sale el siguiente error:
error CS1943: An expression of type
'System.Collections.Generic.IEnumerable<System.Data.DataColumn>' is not
allowed in a subsequent from clause in a query expression with source type
'System.Data.EnumerableRowCollection<AnonymousType#1>'. Type inference
failed in the call to 'SelectMany'.
Sé que puedo fuerza bruta esto con un bucle, pero parece que algo que debería ser capaz de hacer en LINQ. ¡Gracias de antemano por cualquier ayuda!
que funcionaba, pero por qué no hizo el trabajo sintaxis de la consulta? – GuyBehindtheGuy
No recibí el mismo error que usted, pero seleccione debe tener un objeto para seleccionar y no una acción (a menos que la acción devuelva el objeto). Dictionary.Add devuelve * void *, por lo tanto no puede ser un argumento de selección. – Elisha
¿Por qué usar 'columns.Select' para un objeto nuevo, y luego' .ToDictionary' en ese objeto, en lugar de '' ToDictionary' llamar directamente? – palswim