如何从enumerablerowcollectiondatarow>中删除一个数据行?

本文关键字:一个 数据 enumerablerowcollectiondatarow 删除 | 更新日期: 2023-09-27 18:18:28

我想从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??
}

如何从enumerablerowcollectiondatarow>中删除一个数据行?

可以肯定的是,您不能从使用foreach迭代的集合中删除元素。这是完全禁止的,将导致运行时异常。

您可能只想将此逻辑移动到linq query:

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循环。