Subsonic 3.0:如何在对象上使用LIKE?

时间:2009-09-02 00:55:33

标签: c# linq subsonic subsonic3

新推出的Subsonic 3.0,并想知道如何在对象属性上执行LIKE运算符。鉴于以下类,我将如何使用Subsonic 3.0执行LIKE操作。例如SELECT * FROM categories WHERE name LIKE'%foo%';

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

}

4 个答案:

答案 0 :(得分:9)

更好的方法是:

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

这将使用特定于提供程序的通配符。您也可以使用StartsWith和EndWith。

答案 1 :(得分:1)

LIKE'%foo%'适用于TSQL; 对于我们必须使用LIKE'* foo'

的对象

注意:只需用*替换%;

答案 2 :(得分:0)

您可以使用类似以下的内容构建类似内容:

var keyword = "foo";

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

不完全确定它是否是完全正确的代码,但你应该得到要点。

答案 3 :(得分:0)

我认为Robs的反应最多,因为它是独立于提供者的 - 一般来说,拥有DAL的巨大卖点之一并不是锁定在一个数据库引擎上。

坚持:

.Contains()