Wenn Sie das Beispiel nur verwenden, um LINQ zu lernen, ignorieren Sie diesen Beitrag.
Es ist mir nicht klar, dass LINQ tatsächlich der beste Weg ist, dies zu tun. Der folgende Code scheint effizienter zu sein, da kein neuer anonymer Typ erstellt werden muss. Zugegeben, Ihr Beispiel mag konstruiert sein, und die Technik könnte in einem anderen Kontext nützlicher sein, z. B. in einer Datenstruktur, in der ein Index für einen Wert genutzt werden könnte, aber der unten stehende Code ist ziemlich einfach, verständlich (kein Nachdenken erforderlich) und wohl auch effizienter.
string[] s = {"zero", "one", "two", "three", "four", "five"};
List<int> matchingIndices = new List<int>();
for (int i = 0; i < s.Length; ++i)
{
if (s[i].StartWith("t"))
{
matchingIndices.Add(i);
}
}