21

私はこれをやろうとしています:

var list = Session.QueryOver<Person>()
    .Where(x => x.LastName.Contains(searchText))
    .List<Person>();

しかし、私はこのエラーを受け取ります:認識されないメソッド呼び出し:System.String:Boolean contains(System.String)

アイデアはありますか?

アップデート :

public class Person
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
}
4

4 に答える 4

32

このリンクhttp://nhibernate.info/blog/2009/12/17/queryover-in-nh-3-0.htmlに記載されているように、NHibernate には C# に相当するものはありません。

追加の制限

一部の SQL 演算子/関数は、C# で直接同等のものを持っていません。(たとえば、'%anna%' のような SQL where name)。これらの演算子には、Restrictions クラスに QueryOver のオーバーロードがあるため、次のように記述できます。

.Where(Restrictions.On(c => c.Name).IsLike("%anna%"))

型の修飾を避けるためのインライン構文もあります。

.WhereRestrictionOn(c => c.Name).IsLike("%anna%")

于 2012-07-22T15:47:48.663 に答える
4

QueryOver は Contains メソッドをサポートしていないようです。IsLike 制限を試すことができます。

nhibernate queryover LIKE 式ツリー
NHibernate 3.0 search with substring
queryover and (x like 'a' or y like 'a')

于 2012-07-22T15:52:47.687 に答える