Mi piacerebbe convertire un DataTable in un di Dictionary<string, object>
. Ho provato la seguente query LINQ,Come posso convertire un DataTable in 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();
ma ottengo il seguente errore:
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'.
So che posso forza bruta questo con un ciclo, ma sembra che qualcosa che dovrei essere in grado di fare in LINQ. Grazie in anticipo per qualsiasi aiuto!
che ha funzionato, ma perché non ha fatto il lavoro sintassi di query? – GuyBehindtheGuy
Non ho ricevuto lo stesso errore, ma selezionare deve avere un oggetto da selezionare e non un'azione (a meno che l'azione non restituisca l'oggetto). Dictionary.Add restituisce * void *, quindi non può essere un argomento select. – Elisha
Perché usare 'columns.Select' su un nuovo oggetto e quindi su' .ToDictionary' su quell'oggetto, piuttosto che su una chiamata '.ToDictionary'? – palswim