Есть ли синтаксическая возможность не генерировать код переменной 'counter' в "F" и при этом оставаться в синтаксисе LINQ-а ?
static int? getValue(int i){return i;}
// Изначальный вариант
static void F(int i)
{
var q =
from counter in Enumerable.Range(1,10).Take(5)
let result = getValue(i)
where result.HasValue
select result.Value;
}
// F через методы расширения
static void F2(int i)
{
var q =
Enumerable.Range(1, 10)
.Take(5)
.Select(counter => new { counter, result = getValue(i) })
.Where(t => t.result.HasValue)
.Select(t => t.result.Value);
}
// Тут нет лишней переменной
static void F3(int i)
{
var q =
Enumerable.Range(1, 10)
.Take(5)
.Select(_ => getValue(i))
.Where(t => t.HasValue)
.Select(t => t.Value);
}