DataTable 检查行是否在集合中的最后一行

DataTable check if row is last in collection

假设我有一个像这样的数据表:

D 的状态是 DataViewRowState.Deleted,假设 O 是未被触及的行

index: 0 | state: O  
index: 1 | state: O  
index: 2 | state: O  
index: 3 | state: D
index: 4 | state: D

假设我删除了索引 2 处的行(我将行状态设置为已删除)。有没有办法知道索引 1 处的行是否是集合中最后一个未删除的行,而无需 "walking forward" 并检查索引 1 之后每条记录的行状态?

您可以使用 LINQ:

int deletedIndex = 2;
DataRow firstNonDeletedBeforeDeletedIndex = table.AsEnumerable()
    .Where((row, index) => index < deletedIndex && row.RowState != DataRowState.Deleted)
    .LastOrDefault(); // null if none found