【发布时间】:2010-03-24 12:37:50
【问题描述】:
我正在使用 Linq-to-SQL,并且我使用已编译的 Linq 以获得更好的性能。
我有一个带有名为“LookingFor”的INT 字段的用户表,该字段可以具有以下值:1,2,3,12,123,13,23。
我写了一个查询来返回基于“lookingFor”列的用户,我想返回所有包含“lookingFor”值的用户(不仅仅是那些等于它的用户)。
例如user.LookingFor = 12,查询参数为1,应选择该用户。
private static Func<NeDataContext, int, IQueryable<int>>
MainSearchQuery = CompiledQuery.Compile((NeDataContext db, int lookingFor) =>
(from u in db.Users
where (lookingFor == -1 ? true : u.LookingFor.ToString().Contains(lookingFor)
select u.username);
这在非编译的 linq 上工作,但在使用编译时抛出错误。 如何使用已编译的 Linq 修复它?
我收到此错误:
String.Contains 方法仅支持可在客户端计算的参数。
【问题讨论】:
-
您收到的错误是什么?
-
另外,编译的 LinQ 可能没有你想象的那么有用,请参阅:codinghorror.com/blog/2010/03/compiled-or-bust.html
标签: .net linq linq-to-sql