gpt4 book ai didi

c# - 使用 LINQ 获取两个表之间的差异

转载 作者:行者123 更新时间:2023-11-30 21:09:58 25 4
gpt4 key购买 nike

我有一个现有表和一个新表。这些表至少包含两个需要检查的项目。我需要做以下几件事

1) 获取不在新表中但在现有表中的项目列表。 - 所以他们可以被删除2) 获取新表中但不在现有表中的项目列表 - 因此可以添加它们

3) 获取两个表中都存在但现有表需要更新的项目列表

这是数据

var existingItems = new[] 
{
new RetryItem { CellId = 1, Content = "Bob" },
new RetryItem { CellId = 2, Content = "Bill" },
new RetryItem { CellId = 3, Content = "Frank" },
new RetryItem { CellId = 4, Content = "Tom" },
new RetryItem { CellId = 5, Content = "Dick" },
new RetryItem { CellId = 6, Content = "Harry" },
};

var newItemsLarger = new[]
{
new RetryItem { CellId = 1, Content = "Bob" },
new RetryItem { CellId = 2, Content = "Bill" },
new RetryItem { CellId = 3, Content = "Frank" },
new RetryItem { CellId = 4, Content = "Tom now Thoams" },
new RetryItem { CellId = 5, Content = "Dick now Dicky" },
new RetryItem { CellId = 6, Content = "Harry Now Harriet" },
new RetryItem { CellId = 7, Content = "Mary" },
new RetryItem { CellId = 8, Content = "Mungo" },
new RetryItem { CellId = 9, Content = "Midge" },
};

最佳答案

我认为这些可能会满足您的需求:

1)

var q1 = from c1 in existingItems
join c2 in newItemsLarger
on new { c1.CellId, c1.Content } equals new {c2.CellId, c2.Content }
select c1;

2)

var q2 = from c1 in newItemsLarger
where !existingItems.Select(x => x.CellId).Contains(c1.CellId)
select c1;

3)

var q3 = from c1 in existingItems
join c2 in newItemsLarger on c1.CellId equals c2.CellId
where c1.Content != c2.Content
select c2;

关于c# - 使用 LINQ 获取两个表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8756014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com