Ich versuche, meinen Kopf darum zu wickeln, was der C# -Compiler tut, wenn ich Linq-Methoden verkette, insbesondere wenn ich die gleiche Methode mehrfach verkette.Verstehen, wie der C# -Compiler die Verkettung von Linq-Methoden behandelt
Einfaches Beispiel: Angenommen, ich versuche, eine Sequenz von Ints basierend auf zwei Bedingungen zu filtern.
Die naheliegendste Sache ist, etwas zu tun, wie folgt aus:
IEnumerable<int> Method1(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0 && i % 5 == 0);
}
Aber wir konnte Kette auch in dem Verfahren mit einer einzigen Bedingung in jeder:
IEnumerable<int> Method2(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0).Where(i => i % 5 == 0);
}
ich hatte Schau dir die IL in Reflector an. es ist offensichtlich für die beiden Methoden, aber im Moment jenseits meinem Wissen weiter analysiert :)
Ich mag würde, um herauszufinden:
a) was der Compiler in jedem Fall anders macht, und warum.
b) gibt es keine Auswirkungen auf die Leistung (nicht auf Mikro-optimize versucht;! Nur neugierig)
Schöne Antwort. Wir brauchen mehr Material wie dieses auf Stackoverflow. –