我有以下要搜索的实体..如何组合两个字段以获得正确的输入..
类似这样的事情
var personnels = dbContext.Set<Personnel>()
.Where(p =>
(p.FirstName + ' ' + p.Surname).Contains("John Smith")
);
当我这样做时,它说
无法创建“System.Object”类型的常量值。在此上下文中仅支持原始类型或枚举类型。
这是我要修复的代码
var personnels = dbContext.Set<Domain.Entities.App.Personnel>().Where(p =>
((p.GivenName + p.Surname).Contains(criteria.PersonnelName) || String.IsNullOrEmpty(criteria.PersonnelName))
&& (p.PersonnelRoleId == criteria.PersonnelRoleId || (criteria.PersonnelRoleId ?? 0) == 0)
&& (((criteria.ActiveOnly && (p.ActiveFlag)) || (criteria.ActiveOnly == false)))).AsEnumerable();
代码有效,但只有当条件是johnsmith而不是john smith时它才有效..
所以这一行是
(p.GivenName + p.Surname).Contains(criteria.PersonnelName)
如何在那里获得空间
(p.GivenName + ' ' + p.Surname).Contains(criteria.PersonnelName)
不起作用
答案 0 :(得分:2)
所以不要使用
(p.GivenName + ' ' + p.Surname).Contains(criteria.PersonnelName)
我用过
(p.GivenName + " " + p.Surname).Contains(criteria.PersonnelName)
唯一不同的是报价......
并且有效
答案 1 :(得分:0)
Where(x => String.Format("{0} {1}", x.FirstName, x.LastName).Contains("John Smith")).AsEnumerable();