Die Norm Zip
Methode ermöglicht es Ihnen, etwas wie (mit C#) zu schreiben:
from t in first.Zip(second, (f, s) => new { First = f, Second = s }
select ... t.First ... t.Second;
Ich denke, das sollte lesbar genug sein. Ihre Frage scheint darauf hinzudeuten, dass Sie gerne Ihr eigenes Schlüsselwort erstellen möchten, z. B. zip
und erweitern Sie die C#-Abfrageausdrücke damit. Dies ist nicht möglich in C# oder Visual Basic (aber ich stimme zu, es wäre schön, in gewisser Weise).
Mit etwas Mühe können Sie neu definieren was das standardmäßige C#-Abfragekonstrukt tut, so dass join
würde sich verhalten wie zip
(In diesem Fall ist die equals
Teil der Abfrage wäre nicht erforderlich, so dass man eine Menge syntaktisches Rauschen hätte). Möglicherweise könnten Sie auch umdefinieren, was from
Klausel. Ich habe es nicht ausprobiert, aber ich glaube, man könnte so etwas bekommen:
from f in first.Zip()
from s in second.AddToZip()
from t in second.AddToZip()
select ... f ... s ... t ...;
Ich habe einen Artikel geschrieben, der beschreibt, wie man das macht Neudefinition von für die group by
Klausel ( Verwendung des benutzerdefinierten Gruppierungsoperators in LINQ ), um Ihnen eine Vorstellung davon zu vermitteln, wie dies geschehen kann.
(Aber ehrlich gesagt glaube ich, dass der Standard Zip
Methode sollte in Ordnung sein. Die Neudefinition der Operatoren ist recht subtil. Die group by
Beispiel ist vielleicht ansprechender, weil die Gruppierung nach der Methode hässlicher ist, aber auch das ist grenzwertig...)