如何编写在 System.Linq.Dynamic 中生成 LIKE T-SQL 语句的语句

How to write a statement that generates a LIKE T-SQL statement in System.Linq.Dynamic

我正在使用 System.Linq.Dynamic,大多数时候效果都很好。但是,我正在尝试获得一个 StartsWith,它将在 T-SQL 中生成类似 Description LIKE 'test%' 的内容。

我似乎没有找到,而且正如我注意到的那样,文档很少,是在我的代码中编写哪个语句以传递给动态库的 Where 方法以生成该 LIKE 语句。

我已经尝试过但没有成功的事情:

.Where("Description LIKE \"test%\"");
.Where("Description < \"test%\"");

但是没有生成我想要的 LIKE 语句。

我没用过这个库,但是他们有一个 example 可以生成 LIKE 语句。这适合您使用吗?

为了后代,这里是代码:

var q = from c in db.Customers
        where SqlMethods.Like(c.CustomerID, "C%")
        select c;

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 替换为 ContainsEndsWith 以生成它们各自的 tsql "LIKE" 等价物。