1

我正在使用System.Linq.Dynamic并且在大多数情况下效果都很好。但是我试图得到一个会在 T-SQL 中 StartsWith生成类似的东西。Description LIKE 'test%'

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

我已经尝试过但对我没有效果的事情:

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

但是没有任何东西会产生我所追求的 LIKE 语句。

4

2 回答 2

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\")"); 

您可以替换StartsWithContainsEndsWith生成它们各自的 tsql“LIKE”等价物。

于 2018-04-04T12:48:49.077 回答
0

我没有使用过这个库,但他们有一个生成语句的示例。LIKE这适合你的用途吗?

对于后代,这是代码:

var q = from c in db.Customers
        where SqlMethods.Like(c.CustomerID, "C%")
        select c;
于 2018-04-04T12:43:33.340 回答