LINQ to SQL: повторно использовать лямбда-выражение

Я наткнулся на странное поведение LINQ to SQL - может ли кто-нибудь пролить свет на это?

Я хочу определить лямбда-выражение и использовать его в своем операторе LINQ. Следующий код работает нормально:

[...]
Func<Table1, bool> lambda = x => x.Id > 1000;
var result = dataContext.Table1s.Where(lambda);
[...]

Но когда я пытаюсь использовать свое лямбда-выражение в операторе связанной таблицы

[...]
Func<Table1, bool> lambda = x => x.Id > 1000;
var result = dataContext.Table2s.Where(x => x.Table1s.Any(lambda));
[...]

, я получаю исключение:

Unsupported overload used for query operator 'Any'.

Но, и этого я не понимаю: он отлично работает, когда Я ввел свою лямбду прямо в запрос:

[...]
var result = dataContext.Table2s.Where(x => x.Table1s.Any(y => y.Id > 1000));
[...]

ПОЧЕМУ?!

Спасибо.

9
задан Hannes Sachsenhofer 30 December 2010 в 11:18
поделиться