Ответ 1
Нет, синтаксис выражения запроса не поддерживает те перегрузки, которые я боюсь.
С другой стороны, если вы используете функцию "Перегрузка" явно один раз в начале, чтобы создать анонимный тип с индексом и значением, вы можете использовать эту последовательность пар в выражении запроса. Например:
var query = from pair in sequence.Select((value, index) => new { value, index })
where pair.index % 3 == 0
select string.Format("{0}: {1}", pair.index, pair.value);
EDIT: обратите внимание, что в вашем примере кода вы всегда фильтруете сначала, а затем берете индекс первой записи в последовательности результатов. Этот индекс всегда будет равен 0. Если вы действительно хотите найти исходный индекс выбранного идентификатора внутри notifications
, я подозреваю, что вы действительно хотите:
int? index = notifications.Select((n, index) => new { n, index })
.Where(pair => pair.n.EventId == m_lastSelectedEventID)
.Select(pair => (int?) pair.index)
.FirstOrDefault();
(Это вернет a Nullable<int>
из null
, если не найден.)