Ответ 1
ds.Tables[4]
может, но результат вашего linq-запроса может и не быть, что, вероятно, там, где возникает исключение. Разделите цепочку методов, чтобы использовать промежуточные параметры, чтобы вы могли быть уверены, где ошибка. Это также поможет вам проверить существующие строки перед вызовом CopyToDataTable()
и избежать указанного исключения.
Что-то вроде
DataTable dt = null;
var rows = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date);
if (rows.Any())
dt = rows.CopyToDataTable();
Другой вариант - использовать функцию ImportRow
на 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);