使用linq .net删除两个表之间的重复行

时间:2015-11-05 06:41:09

标签: .net

有两个数据表如下 我怎样才能做到这一点。

我已尝试使用Except ...但它只能排除'-1'行...我还需要数量1行

3 个答案:

答案 0 :(得分:1)

也许您需要Enumerable.Except功能。没有现成的解决方案,但您可以尝试与此链接示例中描述的相同:

Product[] fruits1 = { new Product { Name = "apple", Code = 9 }, 
                       new Product { Name = "orange", Code = 4 },
                        new Product { Name = "lemon", Code = 12 } };

Product[] fruits2 = { new Product { Name = "apple", Code = 9 } };

//Get all the elements from the first array
//except for the elements from the second array.

IEnumerable<Product> except =
    fruits1.Except(fruits2);

foreach (var product in except)
    Console.WriteLine(product.Name + " " + product.Code);

答案 1 :(得分:0)

您可以使用以下内容:

var dtTwoIds = dtTwo.Select(element => new {element.ID}).Distinct();
var dtResult = dtOne.Where(element => dtTwoIds.All(ids => ids.ID != element.ID));

答案 2 :(得分:0)

您仍然可以使用Except,但是您需要传递一个知道如何通过ID进行比较的自定义IEqualityComparer。开箱即用,您需要创建一个自定义类,但许多人编写lambda比较器以使其更简单:Can I use Linq's Except() with a lambda expression comparer?