Saya telah a List<BuildingStatus>
disebut buildingStatus
. Saya ingin memeriksa apakah ini berisi status yang kode arang (dikembalikan oleh GetCharCode()
) sama dengan beberapa variabel v.Status
,.
Apakah ada cara untuk melakukan ini, di sepanjang baris kode (non-kompilasi) di bawah ini?
buildingStatus.Contains(item => item.GetCharValue() == v.Status)
Contains()
metode, dan kemudian saya menyadari itu seharusnyaAny()
. +1Metode ekstensi Linq Apa saja bisa bekerja untuk Anda ...
sumber
Inilah cara yang dapat Anda gunakan
Contains
untuk mencapai apa yang Anda inginkan:buildingStatus.Select(item => item.GetCharValue()).Contains(v.Status)
ini akan mengembalikan nilai Boolean.sumber
Saya tidak yakin persis apa yang Anda cari, tetapi program ini:
menghasilkan output yang diharapkan:
Program ini membandingkan representasi string dari enum dan menghasilkan output yang sama:
Saya membuat metode ekstensi ini untuk mengkonversi satu IEnumerable ke yang lain, tapi saya tidak yakin seberapa efisiennya; mungkin hanya membuat daftar di belakang layar.
Kemudian Anda dapat mengubah klausa tempat ke:
dan lewati membuat
List<string>
denganConvertAll ()
di awal.sumber
Jika saya mengerti dengan benar, Anda perlu mengonversi tipe (nilai char) yang Anda simpan di daftar Bangunan ke tipe (enum) yang Anda simpan di daftar buildingStatus.
(Untuk setiap status dalam daftar Bangunan // nilai karakter //, apakah status ada di daftar buildingStatus // enum value //)
sumber
Building
dari pertanyaan, ini sudah benar-benar rusak .foreach(Enum value in Enum.GetValues(typeof(buildingStatus)))
adalah omong kosong.