Dengan menggunakan linq, bagaimana saya dapat mengambil daftar item yang daftar atributnya cocok dengan daftar lain?
Ambil contoh sederhana dan kode pseudo ini:
List<Genres> listofGenres = new List<Genre>() { "action", "comedy" });
var movies = _db.Movies.Where(p => p.Genres.Any() in listofGenres);
.StartWith, .EndsWith, .Contains
dari sini berfungsi, tetapi apa yang bisa dilakukan untuk menggunakan kueri AndaContains
berulang kali berakhir sebagai operasi O (x * y) dalam waktu, tetapi O (1) dalam ruang, di mana x adalah ukuran koleksi pertama dan y adalah ukuran koleksi kedua. MenggunakanIntersect
adalah O (x + y) dalam waktu tetapi O (y) dalam ruang - itu membangun hashset dari koleksi kedua, yang membuatnya cepat untuk memeriksa penyertaan item apa pun dari koleksi pertama. Lihat codeblog.jonskeet.uk/2010/12/30/… untuk detailnyaAnda dapat menggunakan
Contains
kueri untuk ini:sumber
Jika Anda menggunakan
HashSet
alih-alihList
untuklistofGenres
Anda dapat melakukan:sumber
Saya kira ini juga mungkin seperti ini?
Apakah "TakeWhile" lebih buruk daripada "Where" dalam arti performa atau kejelasan?
sumber
TakeWhile
adalah fungsi yang berbeda - ini akan berhenti mengulang jika tidak menemukan kecocokan.Atau seperti ini
...
sumber