Mam dwa wystąpienia typu IEnumerable
w następujący sposób.Uzyskiwanie przecięcia dwóch obiektów IEnumerables przy użyciu LINQ
IEnumerable<Type1> type1 = ...;
IEnumerable<Type2> type2 = ...;
Zarówno Type1
i Type2
zawierać członkiem nazywa common
, więc mimo, że są z innej klasy, możemy nadal odnosić się je w ten sposób.
type1[0].common == type2[4].common
Próbuję filtrować stąd te elementy type1
, które nie mają odpowiedniej wartości w type2
common
i stworzenia słownika w oparciu o wartość z każdym. Teraz robię to przez następującą podwójną pętlę.
Dictionary<String, String> intersection = ...;
foreach (Type1 t1 in type1)
foreach(Type2 t2 in type2)
if (t1.common == t2.common)
intersection.Add(t1.Id, t2.Value);
Teraz Próbowałem z LINQ, ale wszystkie .Where
, .Select
i .ForEach
po prostu dał mi ból głowy. Czy istnieje sposób na staranne wykonanie tej samej operacji za pomocą LINQ?
LINQ po prostu wyliczy. Czy masz problemy z wydajnością? – Paparazzi
Nie. Ale inni programiści śmieją się ze mnie. :(Mówią, że jestem zmęczony, aby znaleźć kod i to nie jest możliwe. Chociaż mogę przyznać, pierwszy, nie zgadzam się na to drugie. :) –
Co się dzieje, gdy masz t1, który ma * dwa * t2s Ten mecz? –