【发布时间】:2011-04-21 21:56:44
【问题描述】:
public class Person
{
public int ID { get; set; }
public int Job { get; set; }
public string Name { get; set; }
}
List<Person> personsOfInterest = GetPersonsOfInterest();
PersonEntities personEntities = new PersonEntities();
var filteredPersons = personEntities.Where(p => personsOfInterest.Any(poi => poi.Job == p.Job && poi.Name == p.Name));
上面的代码会产生一个 NotSupportedException,因为 Linq to Entities 不支持引用非标量变量(Person)。
我该如何解决这个问题?谢谢!
//edit:我正在尝试从 personEntities 中查找人员,他们与 personOfInterest 列表中的任何人具有相同的姓名和相同的工作。例如,我试图在我的 personEntities 中查找名为 Bob 的警察或名为 John 的程序员。
here.(22.2) 中描述了我遇到的错误
【问题讨论】:
-
异常的具体信息是什么?是关于“Linq to Entities 不支持引用非标量变量(Person)”的部分。来自您的分析吗?因为我相信这是因为“poi.Job == p.Job”。
-
您的代码似乎无法编译。
Contains将Person对象作为第一个参数,而不是 lambda 表达式。你应该改用Any。 -
您能用文字描述一下您拥有和正在尝试做的事情吗?
-
我已经附上了我的答案。虽然我还有一个问题:您的代码中的 PersonEntities 是自定义集合类型还是您的 EF 模型中的表/复杂类型?
-
它是我的 EF 模型中的表/复杂类型
标签: linq entity-framework entity-framework-4 linq-to-entities