C#LINQ按位置搜索
我正在尝试在LINQ中重新创建以下SQL查询:C#LINQ按位置搜索,c#,sql,asp.net,sql-server,linq,C#,Sql,Asp.net,Sql Server,Linq,我正在尝试在LINQ中重新创建以下SQL查询: select * from table where column like 'RECORD_%01' 我得到的是: var data = from t in context.table where t.column.StartsWith("RECORD") && t.column.EndsWith("01") select t; 这相当于: select * f
select * from table where column like 'RECORD_%01'
我得到的是:
var data = from t in context.table
where t.column.StartsWith("RECORD")
&& t.column.EndsWith("01")
select t;
这相当于:
select * from table where column like 'RECORD%01'
有人能帮助我如何为''.%'
而不是'%'
添加条件吗?
如果你们不知道我在说什么SQL问题,请检查以下内容,这解释了SQL。这里有一种方法:
var data = from t in context.table
where t.column.StartsWith("RECORD")
&& t.column.EndsWith("01")
&& t.column.Length > 8
select t;
这确保在记录
和01
之间至少有一个字符
当然,根据您使用的查询提供程序的不同,您可能希望简单地尝试使用
LIKE
操作符using,或者使用所描述的其中一种方法。由此看来,您希望确保
var data = from t in context.table
where t.column.StartsWith("RECORD")
&& t.column.EndsWith("01")
&& t.column.Length>=9
select t;
这就是您想要的(或非常类似的东西):
这允许您指定LIKE语句
var data = from t in context.table
where SqlMethods.Like(t.column, "RECORD_%01")
select t;
您缺少长度检查。您需要添加一个检查,其中字符串的长度至少为9(“记录”=6”,“记录”=1%,无所谓,“01”=2)。这可能是一个明显的问题,但您是否尝试过。StartsWith(“记录”?)?我很好奇LINQ是否足够聪明,可以避开你似乎不知道的下划线。这是linq2sql还是另一个orm?您可以使用一些特定于数据库的功能use@ColdSolstice测试表明LINQ创建了一个自定义转义字符,并在SQL查询中使用它。虽然这是一个解决方案,但它不是她要求的解决方案。我自己刚刚发现了这个-
SQLMethods
看起来很方便。为什么要投否决票?如果我的回答有错误或不准确的地方,我很乐意改正。