6 c# sql linq linq-to-entities sql-like
我在ado.net实体框架中的实体中遇到了一些问题.基本上我正在做的是:
var results = (from c in companies
where c.Name.StartsWith(letter)
select c);
Run Code Online (Sandbox Code Playgroud)
并将其转换为SQL,如:
WHERE (CAST(CHARINDEX(@p, [Extent1].[Name]) AS int)) = 1
Run Code Online (Sandbox Code Playgroud)
这很好,但我的表有数百万的记录,所以这运行非常慢.我需要它生成的是:
WHERE Name LIKE @p + '%'
Run Code Online (Sandbox Code Playgroud)
我搜索高低,除了使用存储过程或使用实体sql之外无法找到任何解决方案...
有没有办法通过linq做到这一点?可能通过某种方式将linq扩展到实体linq提供程序,或以某种方式拦截命令树或生成的查询?
哇,这真是一种奇怪的做法!请注意,LINQ-to-SQL(在本例中)使用LIKE @p0 + '%'...非常奇怪。
您使用哪个 EF 提供商(数据库)?SQL 服务器?
正如你所说,存储过程将完成这项工作,但你不应该这样做......非常非常奇怪......