2

我有以下我想搜索的实体..如何组合两个字段以获得正确的输入..

像这样的东西

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)  

不工作

4

2 回答 2

2

所以而不是使用

(p.GivenName  + ' ' +  p.Surname).Contains(criteria.PersonnelName)  

我用了

(p.GivenName  + " " +  p.Surname).Contains(criteria.PersonnelName)  

唯一的区别是引号...

它有效

于 2013-10-03T01:29:36.320 回答
0
Where(x => String.Format("{0} {1}", x.FirstName, x.LastName).Contains("John Smith")).AsEnumerable();
于 2013-10-01T07:48:43.623 回答