我正在使用Linq-to-SQL,并使用已编译的Linq来获得更好的性能。编译Linq&String.Contains
我有一个INT
字段的用户表名为“LookingFor”,它可以具有下列值: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方法。
什么是您会收到错误? – Rik 2010-03-24 12:50:30
此外,编译的LinQ可能不如您想象的那么有益,请参阅:http://www.codinghorror.com/blog/2010/03/compiled-or-bust.html – Rik 2010-03-24 12:54:33