2009-09-02 32 views
1

新增了Subsonic 3.0,並且想知道如何在對象屬性上執行LIKE運算符。鑑於以下課程,我將如何使用Subsonic 3.0執行LIKE操作。例如SELECT * FROM categories WHERE name LIKE'%foo%';Subsonic 3.0:如何在對象上使用LIKE?

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; } 
    } 

}

回答

9

一個更好的辦法來做到這一點是:

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

這將使用提供商特有的通配符。你也可以使用StartsWith和EndWith。

0

您可以通過使用類似下面的東西構造這樣的:如果

var keyword = "foo"; 

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

不完全肯定它是精確的正確的代碼,但你應該得到的要點。

1

LIKE'%foo%'用於TSQL; 我們必須使用LIKE'* foo'

注意:只需將%替換爲*;

0

我認爲Robs響應保持最多的水,因爲它是獨立的提供商 - 一般DAL的巨大賣點之一是沒有被鎖定到一個數據庫引擎。

棒有:

.Contains()