Синтаксис запроса требует ссылки на метод - он не будет принимать лямбду, и во втором примере вы даете ему экземпляр ME.tblPeople
.
Однако, если вы используете синтаксис метода расширения, вы можетедостичь этого легко:
int i = 0;
var qPeople3 = (from ME.tblPeople person in mcontext.tblPeoples
select person).Select(person => { i += 1; return person; });
(я добавил в качестве примера целое число приращения, хотя учтите, что оно фактически не меняется с нуля, пока вы не перечислите qPeople3
.)
Приложение
Это работает только с LINQ to Objects.Чтобы использовать его с запросом LINQ to SQL, перед вызовом Select()
требуется вызов AsEnumerable()
.
Примечания
На самом деле вам не нужен from-in-select
Для этого примера приведенные ниже фрагменты (AFAICT) идентичны, но я оставил их выше для сходства с предыдущими примерами и для иллюстрации того, как это работает.Второй фрагмент разбивает два оператора на отдельные строки, также с одинаковыми результатами.
int i = 0;
var qPeople4 = mcontext.tblPeoples.Select<ME.tblPeople,ME.tblPeople>(person => { i += 1; return person; });
int i = 0;
var qPeople1 = from ME.tblPeople person in mcontext.tblPeoples
select person;
var qPeople5 = qPeople1.Select(person => { i += 1; return person; });