所以我知道 iQueryables 被翻译成 SQL 语句,因此无法处理您可能放入 where 子句的所有可能方法。
但这就是我想要做的:
int[] alreadySelectedIds = ...
var subjects = Entities.NewInstance.Subjects.Where(x => Array.IndexOf(alreadySelectedIds, x.Id) == -1).ToList();
阅读下面这样的帖子,我很欣慰 EF5 应该能够翻译这个。使用 LINQ 从数组中查询 Int Id
获取键与 id 列表(或数组)匹配的实体
但是,我收到此错误:
LINQ to Entities 无法识别方法 'Int32 IndexOf[Int32](Int32[], Int32)' 方法,并且此方法无法转换为存储表达式。
谷歌搜索这个错误并没有给我太多帮助。
我也试过
var newSubjects = Entities.NewInstance.Subjects.Where(x => alreadySelectedIds.Contains(x.Id)).ToList();
无法创建类型为“System.Int32[]”的空常量值。此上下文仅支持实体类型、枚举类型或原始类型。
和
List<int> alreadySelectedIds = ...
无法创建类型为“System.Collections.Generic.List`1”的空常量值。此上下文仅支持实体类型、枚举类型或原始类型。
我被困住了,我的大脑变得糊状,超出了任何优雅恢复的可能性。任何人都可以救我吗?