ds.Tables[4]
könnte, aber das Ergebnis Ihrer linq-Abfrage möglicherweise nicht, was wahrscheinlich ist, wo die Ausnahme ausgelöst wird. Teilen Sie Ihre Methodenverkettung auf, um Zwischenparameter zu verwenden, damit Sie sicher sein können, wo der Fehler auftritt. Es wird Ihnen auch helfen, nach vorhandenen Zeilen zu suchen, bevor Sie CopyToDataTable()
anrufen und vermeiden die genannte Ausnahme.
So etwas wie
DataTable dt = null;
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if (rows.Any())
dt = rows.CopyToDataTable();
Eine weitere Option ist die ImportRow
Funktion auf einer 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);
Nur um sicher zu gehen, wollen Sie nur Einträge, die für heute oder einen Tag in der Zukunft sind? – ryanyuyu
Es tritt auf, weil keine Datensätze übereinstimmen oder die Abfragebedingung vollständig ausfüllen, und das Ergebnis ist null, also versuche ich hier, null in Datentabelle zu kopieren ... – Mike
Wenn Sie die DataTable füllen, können Sie die Abfrage in Bezug auf die SQL nicht ändern Füllen Sie die ursprüngliche DataTable ..? Was wäre, wenn Sie den labda-Ausdruck in eine Linq-Abfrage ändern würden? Haben Sie darüber auch schon nachgedacht 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+selected+new+ist+used – MethodMan