存在于数据库中的记录;列表中不存在

本文关键字:列表 不存在 记录 数据库 存在 | 更新日期: 2023-09-27 18:21:45

我在数据库表中有礼物记录,例如:

Id: 1, Name: A
Id: 2, Name: B
Id: 3, Name: C

IEnumerable<Gift> gifts中,我有修改后来自用户的元素,例如:

Id: 1, Name: A_update
Id: 3, Name: C_update
Id: 0, Name: D_new

现在,我希望数据库中存在的记录不在列表中——所以在这个例子中,它应该是一个记录:

Id: 2, Name: B

我该怎么做,因为下面的代码不起作用:

List<Gifts> result = db.Gifts.Where(x => !gifts.Select(y => y.Id).Contains(x.Id)).ToList();

无法创建"MyProject.Models.Gift"类型的常量值。此中仅支持基元类型或枚举类型上下文

存在于数据库中的记录;列表中不存在

这是实体框架的一个限制。In仅支持在表达式中使用某些特定的数据类型。

如果您使用实体框架4.0或更高版本,您可以使用以下解决方法:

int[] giftIds = gifts.Select(y => y.Id);
List<Gifts> result = db.Gifts.Where(x => !giftIds.Contains(x.Id)).ToList();
相关文章: