任何机构都可以告诉我如何使用microsoft Dynamic Expression API管理LIKE运算符?
我需要在动态中添加多个Like Expression,其中查询
/*
var query =
db.Customers.
Where("CityName Like @0 or CityName Like @1", "London", "USA")
*/
var query =
db.Customers.
Where("CityName Like @0 or CityName Like @1%", "London", "USA")
谢谢堆
答案 0 :(得分:19)
尝试简单地使用“CityName.Contains(@ 1)”,这将转换为正确的lambda,因为它是对可访问类型的方法调用。
类似的东西:
var query =
db.Customers.
Where("CityName.Contains(@0) or CityName.Contains(@1)", "London", "USA")
刚刚使用动态库附带的示例应用程序测试它,它会生成LIKE运算符
答案 1 :(得分:3)
只需添加更多where子句
var query = db.Customers.Where(c=>c.CityName.contains("London"));
query = query.Where(c=>c.CityName.contains("USA"));
query = query.Where(c=>c.CityName.contains("Johannesburg"));
但上面的查询将创建它:
从CityName中选择* 喜欢“伦敦”和 CityName之类的 “美国”等...
你想要
从CityName中选择* 像“伦敦”或 CityName之类的 “美国”等...
要使用Dynamic Created或语句,您可以使用 predicatebuilder ,这真的很多 那里你可以使用的功能...
http://www.albahari.com/nutshell/predicatebuilder.aspx
var predicate = PredicateBuilder.False<Customer>();
predicate = predicate.Or(c=>c.CityName.Contains("London"));
predicate = predicate.Or(c=>c.CityName.Contains("USA"));
predicate = predicate.Or(c=>c.CityName.Contains("Johannesburg"));
答案 2 :(得分:3)
您可以使用.StartsWith(),
.EndsWith()
和.Contains()
分别生成具有尾随,前导和周围通配符的LIKE SQL。不知道如何使用嵌入式通配符生成语句。
答案 3 :(得分:3)
这将在整数字段中使用“Like”...
.Where(searchField +“。ToString()。包含(@ 0)”,searchString);
答案 4 :(得分:2)
@Jaime 这就是我需要的,谢谢。
var query = db.Customers。 Where(“CityName.Contains(@ 0)或CityName.Contains(@ 1)”,“London”,“USA”)
答案 5 :(得分:0)
你可以试试这个。
IList<string> keyword = new List<string>() { "London", "USA", "Johannesburg" };
var query = db.Customers.Where(c => keyword.Contains(c.CityName));