LINQ to SQL查找以另一个表中的字符开头的值

时间:2018-09-05 10:35:31

标签: c# linq linq-to-sql

我想从一个SQL表中检索值列表,其中的记录以在另一个表中定义的前缀开头。

This post给出了准确的答案,但这是针对EF而非SQL的Linq。 使用SQL时出现错误:

  

仅支持可在客户端上评估的参数   String.Contains方法

示例代码:

 <a href="{{ object.myimage.url }}"><img src="{{ object.myimage.thumbnail.url }}"/></a>

这适用于EF。是的,我可以ToList()我的集合,但是表很大,查询变得很慢。关于如何在不枚举我的对象的情况下工作的任何建议?

1 个答案:

答案 0 :(得分:1)

这部分:.Any(p => item.Surname.StartsWith(p))给出错误:

  

String.Contains方法仅支持可以在客户端上求值的参数

它告诉您Contains方法不起作用使用只能在服务器上评估的给定参数。 StartsWith基本上使用相同的机制。 因此,应该使用Contains而不是StartsWithIndexOf来找出包含参数是否出现在开头:

.Any(p => item.Surname.IndexOf(p) == 0)

根据MSDN:

  

IndexOf(T):

     

在列表中找到的项目的索引;否则为-1。

此答案部分取自here