有两个数据表如下 我怎样才能做到这一点。
我已尝试使用Except ...但它只能排除'-1'行...我还需要数量1行
答案 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?。