2009-09-02 7 views
1

Subsonic 3.0の新機能で、オブジェクト属性に対してLIKE演算子を実行する方法が不思議です。以下のクラスが与えられた場合、Subsonic 3.0を使用してLIKE操作を実行する方法を説明します。たとえば、SELECT * FROMカテゴリWHERE name LIKE '%foo%';それは正確に正しいコードであるSubsonic 3.0:オブジェクトにLIKEを使用するには?

var keyword = "foo"; 

return new SubSonic.Select().From(Categories.Schema) 
    .Where(Categories.name).Like("%" + keyword + "%") 
    .ExecuteTypedList<Categories>(); 

正確にわからない場合は、しかし、あなたはその要旨を取得する必要があります:あなたは、次のようなものを使用することによってなどを構築することができ

答えて

9

より良い方法は、次のようになります。

return new SubSonic.Select().From(Categories.Schema) 
    .Where(Categories.name).Contains("foo") 
    .ExecuteTypedList<Categories>(); 

これは、プロバイダ固有のワイルドカードを使用します。 StartsWithとEndWithを使用することもできます。

0

public class Category 
{ 
    private String categoryID; 
    private String name; 

    public Category() 
    { 
     // Do Nothing 
    } 

    public Category(String name) 
    { 
     this.Name = name; 
    } 

    public string CategoryID 
    { 
     get { return this.categoryID; } 
     set { this.categoryID = value; } 
    } 

    public string Name 
    { 
     get { return this.name; } 
     set { this.name = value; } 
    } 

}。それを行うには

1

LIKE '%foo%'はTSQL用です。 私たちはLIKE '* foo'を使用する必要があります。

注:単に%をa *に置き換えてください。

0

ロブスのレスポンスはプロバイダーに依存しないため、ほとんどの水を保持していると思います。一般的にDALを持っているという大きなセールスポイントの1つは、1つのデータベースエンジンにロックされていません。

スティック付き:

.Contains() 
関連する問題