Wie Schneide zwei verschiedenen IEnumerable-Sammlungen
ich denke, diese Frage wurde gebeten vor, aber ich havent in der Lage gewesen, um daraus eine klare Antwort. Ich bin auf der Suche nach der beste Weg (oder Weg) zu kreuzen zwei völlig verschiedene ienumerable Sammlungen.
Klasse A:
- int z1
- int z2
- int z3
- string z4
Klasse B:
- int j5
- int j6
- T j7
- T j8
- string j9
..Ich will intersect List<A>
mit List<B>
auf z2 == j6
.
kann das getan werden?
Sind Sie auf der sicher ist eine Kreuzung? Es klingt für mich wie Sie wollen, ein join.
Ähnliche Frage: Schneiden einer Sammlung von Sammlungen in LINQ
Ähnliche Frage: Schneiden einer Sammlung von Sammlungen in LINQ
InformationsquelleAutor Grant | 2011-03-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Frage nicht wirklich sinnvoll - was wäre das Ergebnis-Typ sein? Kreuzungen durchgeführt werden müssen, auf zwei Sequenzen des gleichen Typs. Es klingt wie Sie nicht so viel wollen, dass eine Kreuzung zwischen zwei Mengen, die als filter der ersten Sequenz basierend auf möglichen Werte von z2. Zum Beispiel:
Oder möglicherweise als Frank schlägt vor, Sie möchten eine Verknüpfung. Zum Beispiel:
Geben Sie alle Paare von Werten aus den beiden Listen, die genau auf z2/j6.
Es ist schwer zu sagen, um ehrlich zu sein. Es ist möglich - ich werde Bearbeiten den Fall. Es ist nicht wirklich eine Kreuzung als solcher, aber...
Meine Vermutung ist, dass die OP nicht in der Lage war, den Sinn des anderen Antworten, weil Sie die falsche Terminologie. Wie Sie sagen, die Kreuzung nicht sinnvoll ist, die auf verschiedenen Datentypen. Wenn Sie neu interpretieren "Kreuzung" nur "hier finden Sie die passenden Werte", obwohl, "join", auch passt die definition. Da Verknüpfungen Sinn machen, für verschiedene Daten-Typen, dachte ich, dass ist eher was OP will.
danke.. sind Sie richtig. ich wollte eigentlich zum filtern der Ergebnisse der ersten Sequenz. Dank der verwendeten join!
InformationsquelleAutor Jon Skeet
Müssen Sie implementieren eine benutzerdefinierte Gleichheit comparer (siehe
IEqualityComparer<T
> - Schnittstelle) zu übergeben Sie als zweites argument aufIntersect()
.InformationsquelleAutor UserControl
Mithilfe des intersect-Methode, können Sie gemeinsamen Mitglieder zwischen den beiden enumerables, wie dieses Beispiel zeigt:
Ich denke nicht so. In diesem, wie in den meisten Fällen mit Codierung, mehrere Lösungen würde die Rechnung passen. Es hängt alles davon ab, was die person versucht zu erreichen. Ich denke, deine Antwort macht mehr Sinn, wenn.
Was Jon ist, ist, dass Sie zwei
List<object>
, während der OP will "intersect" einList<A>
mit einemList<B>
(wobei A und B sind verschiedene Arten).Sie und Jon sind beide Recht. Ich verpasste Grant die Letzte änderung, die macht viel mehr klar. Ich entschuldige mich.
InformationsquelleAutor Ioannis Karadimas
InformationsquelleAutor Yuriy Rozhovetskiy