我正在使用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