To z grubsza odpowiednikiem w koncepcji do tego, mimo że rzeczywisty model wykonanie różni się oczywiście (leniwa itp)
for (int i = 0; i < slotIds.Count; i++)
{
int first = slotIds[i];
for (int j = i + 1; j < slotIds.Count; j++)
{
int second = slotIds[j];
results.Add(new { first, second });
}
}
SelectMany
przy wystającą value
i index
jest sposób wykorzystania zarówno first
i i
, aby utworzyć wewnętrzną pętlę. Potrzebujemy indeksu, aby pomijać wartości index + 1
, co jest równoważne z pętlą j
zaczynającą się od i + 1
w powyższym kodzie.
Czy to pomaga? Jeśli nie, czy mógłbyś wskazać, który fragment jest mylący?
EDYCJA: Aargh - Nie zdawałem sobie sprawy, że inne pytanie, na które się powołujesz, zaczęło się od tego kodu! Myślę, że nadal jest to przydatne, aby pod akapitem poniżej coś się zawiesić ...
Jeśli zrozumiałeś alternatywną (wyrażenie zapytania) wersję mojej odpowiedzi, to pierwsza wersja jest podobna, po prostu używając przeciążenia z SelectMany
co pozwala ci użyć zarówno wartości, jak i indeksu w "zewnętrznej" sekwencji.
Dlaczego nie pytasz o to w komentarzu pod tą odpowiedzią? –