DataTable dt = ds.Tables[4].AsEnumerable()
.Where(x => ((DateTime)x["EndDate"]).Date >= DateTime.Now.Date)
.CopyToDataTable();
ds.Tables[4]
有行但抛出异常
"The source contains no DataRows."
知道如何处理或摆脱这个异常吗?
最佳答案
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);
关于c# - 源不包含数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28324740/