我想从一个SQL表中检索值列表,其中的记录以在另一个表中定义的前缀开头。
This post给出了准确的答案,但这是针对EF而非SQL的Linq。 使用SQL时出现错误:
仅支持可在客户端上评估的参数 String.Contains方法
示例代码:
<a href="{{ object.myimage.url }}"><img src="{{ object.myimage.thumbnail.url }}"/></a>
这适用于EF。是的,我可以ToList()我的集合,但是表很大,查询变得很慢。关于如何在不枚举我的对象的情况下工作的任何建议?
答案 0 :(得分:1)
这部分:.Any(p => item.Surname.StartsWith(p))
给出错误:
String.Contains方法仅支持可以在客户端上求值的参数
它告诉您Contains
方法不起作用使用只能在服务器上评估的给定参数。 StartsWith
基本上使用相同的机制。
因此,应该使用Contains
而不是StartsWith
或IndexOf
来找出包含参数是否出现在开头:
.Any(p => item.Surname.IndexOf(p) == 0)
根据MSDN:
IndexOf(T):
在列表中找到的项目的索引;否则为-1。
此答案部分取自here。