ds.Tables[4]
potrebbe, ma il risultato del tuo linq-query potrebbe non, che è probabile dove viene gettata l'eccezione. Dividi il tuo metodo di concatenamento per utilizzare i parametri intermedi in modo da poter essere certo di dove si sta verificando l'errore. Ti aiuterà anche a controllare le righe esistenti prima di chiamare CopyToDataTable()
e evitando l'eccezione.
Qualcosa di simile
DataTable dt = null;
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if (rows.Any())
dt = rows.CopyToDataTable();
Un'altra opzione è quella di utilizzare la funzione ImportRow
su una scissione DataTable
DataTable dt = ds.Tables[4].Clone();
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
foreach (var row in rows)
dt.ImportRow(row);
fonte
2015-02-04 15:14:58
Giusto per essere sicuri, vuoi solo le voci che sono per oggi o un giorno in futuro? – ryanyuyu
si verifica perché nessun record corrisponde o riempie completamente la condizione della query e il risultato è nullo quindi qui sto tentando di copiare null in datatable ... – Mike
quando si inserisce DataTable non è possibile modificare la query in relazione allo sql utilizzato per popolare il DataTable iniziale ..? anche se dovessi cambiare l'espressione labda in una query Linq ... hai pensato anche a questo https://msdn.microsoft.com/en-us/library/system.data.datatableextensions.asenumerable%28v=vs .110% 29.aspx || https://msdn.microsoft.com/en-us/library/bb386921%28v=vs.110%29.aspx || http://forums.asp.net/t/1557426.aspx?query+CopyToDataTable+does+not+work+when+select+new+is+used – MethodMan