Intersect dapat digunakan untuk menemukan kecocokan antara dua koleksi, seperti:
// Assign two arrays.
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call Intersect extension method.
var intersect = array1.Intersect(array2);
// Write intersection to screen.
foreach (int value in intersect)
{
Console.WriteLine(value); // Output: 2, 3
}
Namun yang ingin saya capai adalah kebalikannya, saya ingin mendaftar item dari satu koleksi yang hilang dari yang lain :
// Assign two arrays.
int[] array1 = { 1, 2, 3 };
int[] array2 = { 2, 3, 4 };
// Call "NonIntersect" extension method.
var intersect = array1.NonIntersect(array2); // I've made up the NonIntersect method
// Write intersection to screen.
foreach (int value in intersect)
{
Console.WriteLine(value); // Output: 4
}
c#
.net
collections
intersect
Peter Bridger
sumber
sumber
Jawaban:
Seperti yang dinyatakan, jika Anda ingin mendapatkan 4 sebagai hasilnya, Anda dapat melakukan seperti ini:
Jika Anda ingin non-persimpangan nyata (juga keduanya 1 dan 4), maka ini yang harus dilakukan:
Ini tidak akan menjadi solusi yang paling berhasil, tetapi untuk daftar kecil itu akan berfungsi dengan baik.
sumber
Kamu bisa memakai
Atau bisa Anda gunakan
sumber
SymmetricExceptWith
mungkin metode favorit saya.Kode ini menghitung setiap urutan hanya sekali dan menggunakan
Select(x => x)
untuk menyembunyikan hasilnya untuk mendapatkan metode ekstensi gaya Linq bersih. Karena menggunakanHashSet<T>
runtime-nya adalahO(n + m)
jika hash didistribusikan dengan baik. Elemen duplikat di kedua daftar dihilangkan.sumber
Saya pikir Anda mungkin mencari
Except
:Lihat tautan ini , tautan ini , atau Google, untuk informasi lebih lanjut.
sumber
Saya tidak 100% yakin apa yang seharusnya dilakukan oleh metode NonIntersect Anda (mengenai teori himpunan) - apakah
B \ A (semuanya dari B yang tidak terjadi di A)?
Jika ya, maka Anda harus dapat menggunakan operasi Kecuali (B.Kecuali (A)).
sumber
sumber
array1.NonIntersect (array2);
Nonintersect operator tersebut tidak ada di Linq yang harus Anda lakukan
kecuali -> gabungan -> kecuali
sumber
sumber