我正在使用System.Linq.Dynamic并且在大多数情况下它效果很好。但是我试图得到一个StartsWith
,它会在T-SQL中产生类似Description LIKE 'test%'
的东西。
我似乎没有找到,并且文档很少,因为我注意到,在我的代码中写入哪个语句以传递给Dynamic库的Where方法来生成LIKE
语句。
我已经尝试但没有为我效劳的事情:
.Where("Description LIKE \"test%\"");
.Where("Description < \"test%\"");
但是没有任何东西生成我所追求的LIKE语句。
答案 0 :(得分:1)
System.Linq.Dynamic
将您的文本转换为常规LINQ表达式,并且没有“LIKE”的概念。你会如何在常规LINQ中写下你的喜欢?这样的事情:
ctx.Entity.Where(c => c.Description.StartsWith("test"));
这几乎完全映射到你应该用动态linq做的事情:
// @0 is first parameter, which is "test" in this case
ctx.Entity.Where("Description.StartsWith(@0)", "test");
您也可以传递值内联,但我建议您始终使用上面的参数
ctx.Entity.Where("Description.StartsWith(\"test\")");
您可以将StartsWith
替换为Contains
或EndsWith
,以生成各自的tsql“LIKE”等效项。
答案 1 :(得分:0)
我没有使用过这个库,但是他们有example生成LIKE
语句。这适合你的使用吗?
对于后人,这是代码:
var q = from c in db.Customers
where SqlMethods.Like(c.CustomerID, "C%")
select c;