Query LINQ IEnumerable per IEnumerable risultati in null c# datatable linq sqlbulkcopy

Domanda

Perché la mia query LINQ ("righe") viene visualizzata come null quando sembra che abbia molti dati ("waypoint")?

Sto facendo un inserto di record ~ ​​20k e piuttosto che passare attraverso Entity Framework ho optato per SqlBulkCopy, il che sembra significare che ho bisogno di un datatable. Sto cercando di ottenere un oggetto IEnumerable in IEnumberable in quanto sembra essere l'unico modo per ottenere CopyToDataTable ().

Stavo copiando la sintassi in questa risposta , e puoi vedere nel mio debugger che ho un sacco di oggetti nella mia lista originale, ma IEnumerable è nullo.

inserisci la descrizione dell'immagine qui

Stesso codice, forse più facile da leggere:

    IEnumerable<DataRow> rows =
            (from w in waypoints.AsEnumerable()
            select w)  as IEnumerable<DataRow>;

    DataTable table = rows.CopyToDataTable();

La variabile "rows" restituisce null.

Risposta accettata

Si sta tentando di digitare un IEnumerable<Waypoint> come IEnumerable<DataRow> , che non funzionerà a meno che la classe Waypoint sia derivata da DataRow , che presumo non lo sia. La documentazione per il metodo CopyToDataTable è abbastanza chiara:

Il parametro T dell'origine dei parametri di input può essere solo di tipo DataRow o un tipo derivato da DataRow.

Dovrai rendere la tua tabella di dati molto lunga, sfortunatamente. Crea un nuovo DataTable vuoto, aggiungi colonne alla sua raccolta di Columns , quindi aggiungi righe alla sua raccolta di Rows .



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché