目前.NET Framework 3.5 LINQ查询的一个BUG了,在对DataTable进行删除操作之后使用LINQ表达式进行查询,它会检索RowState为DataRowState.Deleted的行记录,然后抛出DataRowState.Deleted记录不可访问的异常。在MS解决这个BUG之前,编程中应注意避免出错:
1.使用LINQ查询之前调用DataSet.AcceptChanges(),移除被标记为DataRowState.Deleted的记录;
2.使用Where方法过滤:
dt.Select(a => a.UserID).Where(a => a.RowState != DataRowState.Deleted);