新推出的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; }
}
}
答案 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()