我对Linq有问题,我将在示例中解释:
我有一个名为employee的数据库表,其中有firstname和lastname列,
以及一种搜索员工的方法,该方法获取一个名列表作为参数,该列表中的元素的格式为“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;
第一个和第二个查询给出:“无法创建类型为”closure type“的常量值。此上下文中只支持基元类型(“Int32、String和Guid”)。异常
第三:“Linq to Entities无法识别方法”Boolean Contains[string](System.Collections.Generic.IEnumerable“1[System.String],System.String)”方法,并且此方法无法转换为存储表达式。“
很高兴听到你的建议:)
谢谢您!
附笔
是的,我知道可以在列表中拆分名称并分别比较它们,但仍然好奇为什么这些查询不起作用。