保持值存储在列表中< DataRow> - 将列表与DataTable进行比较 [英] Keeping Values Stored in List<DataRow> - Comparing the list to DataTable

查看:87
本文介绍了保持值存储在列表中< DataRow> - 将列表与DataTable进行比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前有一个List< DataRow>存储我需要保留的DataRows。

 List< DataRow> rowsToKeep = new List< DataRow>(); 
foreach(newTable.Rows中的DataRow r)
{
foreach(table.Rows中的DataRow r2)
{
if(r == r2){
rowsToKeep.Add(r);
}
}
}

但是,由于该程序其余部分的设置方式我需要从newTable DataTable中删除rowsToKeep中的值。这样做最有效的方法是什么?谢谢

解决方案

使用LINQ的
除了
以获取要删除的行列表。然后调用foreach删除每一个。

 var itemsToKeep = ...; 

var originalItems = ...;

//请注意,这假设使用了相等比较
var itemsToRemove = originalItems.Except(itemsToKeep);
foreach(itemsToRemove中的var项目)
item.Delete();


I currently have a List<DataRow> that stores DataRows I need to keep.

List<DataRow> rowsToKeep = new List<DataRow>();
foreach (DataRow r in newTable.Rows)
{
    foreach (DataRow r2 in table.Rows)
    {
        if(r == r2){
            rowsToKeep.Add(r);
        }
    }
}

But, because of the way the rest of this program is set up, I need to delete the values in rowsToKeep out of the newTable DataTable. What is the most efficient way of doing this? Thanks

解决方案

Use LINQ's Except to get the list of rows to remove. Then call foreach to Delete each one.

var itemsToKeep = …;

var originalItems = …;

//Note that this assumes equality comparison is being used
var itemsToRemove = originalItems.Except(itemsToKeep);
foreach (var item in itemsToRemove)
   item.Delete();


这篇关于保持值存储在列表中&lt; DataRow&gt; - 将列表与DataTable进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆