x
- это одиночный результат типа элементов в последовательности results
. y
- это отдельный член типа элементов в x.Members
sequence.
Это лямбда-выражения (x => x.whatever
), которые были введены в язык с C # 3, где x
- это ввод, а правая сторона (x.whatever
) -вывод (в данном конкретном сценарии использования).
Более простой пример
var list = new List<int> { 1, 2, 3 };
var oddNumbers = list.Where(i => i % 2 != 0);
Здесь i
- это отдельный элемент int
, который является входом в выражение.i % 2 != 0
- логическое выражение, оценивающее, является ли ввод четным или нечетным.Полное выражение (i => i % 2 != 0
) является предикатом, Func<int, bool>
, где входное значение является целым числом, а выходное значение - логическим.Следить?При выполнении итерации по запросу oddNumbers
каждый элемент в последовательности list
сравнивается с предикатом.Те, которые проходят, становятся частью вашего выхода.
foreach (var item in oddNumbers)
Console.WriteLine(item);
// writes 1, 3