首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >比较两个数据集合,并将丢失的数据更新为已删除的

比较两个数据集合,并将丢失的数据更新为已删除的
EN

Stack Overflow用户
提问于 2018-01-10 23:30:02
回答 1查看 53关注 0票数 0

假设我们有这样的表单:

我已经预先填好了3封电子邮件。然后,我决定删除一封电子邮件,当我单击更新时,我会将新的电子邮件集合发送到API。

如何将字段IsDeleted更新为数据库中不再位于新集合中的字段。

基本上,当我从前端电子邮件中删除时,我希望那些被删除的邮件在数据库中相应地更新。

我的方法是:通过Id获取当前合同的电子邮件集合,然后与前端的新集合进行比较。缺少的电子邮件Ids会将字段IsDeleted更新为true。但这将是在O(N2)表示法的foreach内部。使用linq有什么简单的方法吗?

EN

回答 1

Stack Overflow用户

发布于 2018-01-10 23:47:59

当您请求Linq解决方案时,您可以使用System.Linq.Enumerable.Except

例如:

代码语言:javascript
复制
var oldList = new List<string> { "A", "B", "C" };
var newList = new List<string> { "A", "C" };

var deletedValues = oldList.Except(newList ); // deletedValues = { "B" }

之后,您可以遍历deletedValues并设置IsDeleted = true;

根据Reference Source - Enumerable.cs,将执行以下代码。

static IEnumerable ExceptIterator(IEnumerable first,IEnumerable second,IEqualityComparer比较器){ set Set =新集合(比较器);foreach (第二个元素中的TSource元素)set.Add(元素);foreach (第一个元素中的TSource元素) if (set.Add(元素)) yield元素;}

但是我必须承认我不能告诉你O表示法,因为set.Add()会在幕后做很多事情。也许有人可以在评论中帮我解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48190824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档