Короткий ответ: вы не можете сделать это функцией ожидания. В вашем примере id
фактически сохраняется в закрытии .
Длинный ответ заключается в том, что вы можете написать класс, который фиксирует состояние, инициализируя его значением id
, с которым вы хотите работать, сохраняя его как переменную-член. Внутренне замыкания работают аналогично - разница состоит в том, что они фактически фиксируют ссылку на переменную, а не ее копию. Это означает, что замыкания могут «видеть» изменения переменных, с которыми они связаны. Для получения более подробной информации см. Ссылку выше.
Так, например:
public class IdSearcher
{
private int m_Id; // captures the state...
public IdSearcher( int id ) { m_Id = id; }
public bool TestForId( in otherID ) { return m_Id == otherID; }
}
// other code somewhere...
public void GetRecord(int id)
{
var srchr = new IdSearcher( id );
_myentity.Schedules.Where( srchr.TestForId );
}