Этот бит кода:
d => d.DinnerID == id
Можно рассматривать как определение функции типа Func<Dinner, bool>
.
Что бы вы ни передавали, эта функция может быть вызвана и передана Dinner
, и она вернет bool
.
void Foo(Func<Dinner, bool> f)
{
bool result = f(new Dinner());
}
В вашем реальном примере функция SingleOrDefault
будет вызывать функцию, которую вы даете ей несколько раз, каждый раз передавая ей Dinner
, и возвращает Dinner
, для которого функция возвращает true
.
На самом деле, когда вы используете IQueryable
, это всего лишь концептуально , что происходит. Скорее всего, код функции конвертируется в SQL, и все выполнение выполняется внутри базы данных.