比较整数列表,并使用结果LinqtoSQL中的差异添加/删除数据库中的行

时间:2015-05-29 16:02:55

标签: c# linq list linq-to-sql

目前我正在使用LinqtoSql开发一个项目,我想为我当前的问题找到一个更简单的解决方案。

实施例:  假设我有一个名为Example的表,有三行(值为1,2,4)  现在在代码(c#)中我将这些值作为Integer列表(让我们将其命名为lstExisting) 现在在我的方法中,我得到了另一个整数List(比如lstCurrent),其中包含整数值(1,2,3) 现在我想比较两个列表并找到整数的差异并更新数据库,因此根据我的示例,应添加值为3的新行,并且应删除值为4的现有行。 PS :(整数值总是唯一的,将是1,2,3,4) Linq解决方案将更受欢迎,但我不介意其他更简单的解决方案。

由于

2 个答案:

答案 0 :(得分:1)

您需要使用Except找到新项目并删除项目,例如:

var newItems = lstCurrent.Except(lstExisting).ToList();
var toBeDeletedItems = lstExisting.Except(lstCurrent).ToList();

稍后您可以迭代每个列表并相应地添加/删除。

答案 1 :(得分:0)

尝试使用Contains()。有两个列表,你可以写这样的东西。这样做是迭代你的方法列表中的每个项目,并检查原始文件是否在那里。

var lstExisting = getExistingList();
var lstCurrent = getCurrentList();

foreach(var currentInt in lstCurrent)
{
    if(!lstExisting.Contains(currentInt))
    {
        //insert currentInt
    }