2

検索したい次のエンティティがあります.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();

コードは機能しますが、条件が john smith ではなく johnsmith である場合にのみ機能します。

だからラインはこれです

(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 に答える