与Linq一起使用时,网格视图错误数据不包含行
本文关键字:视图 网格 错误数据 包含行 Linq 一起 | 更新日期: 2023-09-27 18:26:14
我有一个Linq语句,它过滤事务。当它过滤时,它工作得很好,但我在dt中得到了一个错误。当没有返回任何内容时,使用AsEnumerable()。
错误为"数据不包含行"。有人知道在什么都没有归还的情况下如何处理吗?
newDataTable = dt.AsEnumerable()
.Where(r => !ListLinkedIds.Contains(r.Field<int>("LinkedTicketId")))
.CopyToDataTable();
gvMain.DataSource = newDataTable;
gvMain.DataBind();
如果输入序列为空,则不能使用CopyToDataTable
。所以你需要先检查一下:
var newDataTable = dt.Clone(); // an empty table with the same schema
var ticketRows = dt.AsEnumerable()
.Where(r => !ListLinkedIds.Contains(r.Field<int>("LinkedTicketId")));
if(ticketRows.Any())
newDataTable = ticketRows.CopyToDataTable();
CopytoDataTable
可能出现的异常
- ArgumentNullException
源IEnumerable序列为null,无法创建新表 - InvalidOperationException
- 源序列中的DataRow的状态为Deleted
- 源序列不包含任何DataRow对象
- 源序列中的DataRow为null
在调用AsEnumerable()
之前,检查您的DataTable
是否有任何行
if (dt.Rows.Count > 0)
{
newDataTable = dt.AsEnumerable()
.Where(r => !ListLinkedIds.Contains(r.Field<int>("LinkedTicketId")))
.CopyToDataTable();
gvMain.DataSource = newDataTable;
gvMain.DataBind();
}
else {
//error
}