C# 比较两个数据集合,并更新丢失的数据以删除
假设我们有这个表格: 我已经预填了3封电子邮件。然后我决定删除一封电子邮件,当我单击“更新”时,我会向API发送新的电子邮件集合 如何将字段更新为数据库中不再在新集合中的字段 基本上,当我从前端电子邮件中删除时,我希望删除的邮件在db中相应地更新 我的做法是:C# 比较两个数据集合,并更新丢失的数据以删除,c#,linq,C#,Linq,假设我们有这个表格: 我已经预填了3封电子邮件。然后我决定删除一封电子邮件,当我单击“更新”时,我会向API发送新的电子邮件集合 如何将字段更新为数据库中不再在新集合中的字段 基本上,当我从前端电子邮件中删除时,我希望删除的邮件在db中相应地更新 我的做法是: 按Id获取当前合同的电子邮件收集,然后与前端的新收集进行比较。缺少的电子邮件ID然后更新字段被删除为true。但这将是foreach内部的foreach,它是O(N2)表示法。linq有什么简单的方法吗?当您要求linq解决方案时,您可
按Id获取当前合同的电子邮件收集,然后与前端的新收集进行比较。缺少的电子邮件ID然后更新字段被删除为true。但这将是foreach内部的foreach,它是O(N2)表示法。linq有什么简单的方法吗?当您要求linq解决方案时,您可以使用 例如:
var oldList = new List<string> { "A", "B", "C" };
var newList = new List<string> { "A", "C" };
var deletedValues = oldList.Except(newList ); // deletedValues = { "B" }
但是我必须承认我不能告诉你关于O符号的事情,因为
set.Add()
会在幕后做很多事情。也许有人能在评论中帮我解决这个问题
static IEnumerable<TSource> ExceptIterator<TSource>(IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer)
{
Set<TSource> set = new Set<TSource>(comparer);
foreach (TSource element in second)
set.Add(element);
foreach (TSource element in first)
if (set.Add(element))
yield return element;
}