【发布时间】:2009-08-01 01:02:07
【问题描述】:
我在使用 linq 时遇到了问题,我会举例说明:
我有一个名为 Employee 的数据库表,其中包含 FirstName 和 LastName 列, 以及一种搜索员工的方法,该方法以 nameList 列表作为参数,该列表中的元素是格式为“Fred Burn”或“Grim Reaper”的名称, 已经尝试过这些方法,但没有运气=[
//just all employees
var allData = from emp in Context.Employee select emp;
var test1 = from emp in allData
where(emp.FirstName + " " + emp.LastName).Contains
("" + ((from n in nameList select n).FirstOrDefault()))
select emp;
var test2 = (from emp in allData
where (emp.FirstName + " " + emp.LastName)
== ((from n in nameList select n).FirstOrDefault())
select emp);
var test3 = from emp in allData
where (from n in nameList select n).Contains
(emp.FirstName + " " + emp.LastName)
select emp;
第一个和第二个查询给出:{“无法创建类型为'闭包类型'的常量值。在此上下文中仅支持原始类型('例如 Int32、String 和 Guid')。”} 异常
第三个:{“LINQ to Entities 无法识别方法 'Boolean Contains[String](System.Collections.Generic.IEnumerable`1[System.String], System.String)' 方法,并且此方法不能被翻译成商店表达式。"}
很高兴听到你的建议:)
谢谢!
p.s.
是的,我知道可以在列表中拆分名称并分别比较它们,但仍然很好奇为什么这些查询不起作用。
【问题讨论】: