如何从EnumerableRowCollection <datarow>中删除DataRow?</datarow>

时间:2011-12-21 20:00:47

标签: c# ienumerable datarow

我想从EnumerableRowCollection中删除数据行。那可能吗?。我使用EnumerableRowCollection而不是泛型var变量来理解我的上下文。

EnumerableRowCollection<DataRow> results = from myRow in myDataTable.AsEnumerable()
                                           where results.Field("RowNo") == 1
                                           select results;

foreach(DataRow result in results)
{
    if(resultOk(result))
    delete result from results??
}

1 个答案:

答案 0 :(得分:3)

当然,您无法从使用foreach进行迭代的集合中删除元素。这只是被禁止而且会导致运行时异常。

您可能只想将此逻辑移至linq查询:

EnumerableRowCollection<DataRow> results = from myRow in myDataTable.AsEnumerable()
where myRow.Field("RowNo") == 1 && !resultOk(myRow)
select myRow; // note that you're returning myRow, not results, like in your code
// you need to pay attention to code samples you're providing to avoid misunderstanding

这将返回包含您真正想要的元素的列表,而无需在foreach循环中删除这些元素。