如何编写在 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
替换为 Contains
或 EndsWith
以生成它们各自的 tsql "LIKE" 等价物。
我正在使用 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
替换为 Contains
或 EndsWith
以生成它们各自的 tsql "LIKE" 等价物。