Saya menggunakan C # pada Framework 3.5. Saya ingin cepat menyortir Generik List<T>
. Demi contoh ini, katakanlah saya memiliki Daftar Person
tipe dengan properti dari nama belakang. Bagaimana cara saya mengurutkan Daftar ini menggunakan ekspresi lambda?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Apakah Anda perlu daftar untuk disortir di tempat, atau hanya urutan yang terurut dari isi daftar? Yang terakhir lebih mudah:
Untuk mengurutkan di tempat, Anda akan memerlukan a
IComparer<Person>
atau aComparison<Person>
. Untuk itu, Anda mungkin ingin mempertimbangkanProjectionComparer
di MiscUtil .(Aku tahu aku terus membawa MiscUtil - itu tetap relevan ...)
sumber
List<T>
, tetapi Anda tidak membutuhkannya jika Anda hanya ingin mengulanginya.Anda dapat menggunakan LINQ :) menggunakan:
sumber
sumber
OrderBy
tidak mengubah daftar, tetapi mengembalikan "koleksi" baru (biasanya malasIEnumerable<T>
) yang perlu ditugaskan ke sesuatu.sumber
bagi saya panduan boneka berguna ini - Menyortir dalam Daftar Generik - berfungsi. ini membantu Anda untuk memahami 4 cara (kelebihan) untuk melakukan pekerjaan ini dengan penjelasan yang sangat lengkap dan jelas dan contoh-contoh sederhana
sumber
Anda dapat menggunakan potongan kode ini:
dimana
New1
aList<Employee>
.EmpList
adalah variabel dari aList<Employee>
.z
adalah variabelEmployee
tipe.sumber
var
tipe.New1
adalahList<Employee>
danz
sekarangEmployee
.Anda juga bisa menggunakan
sumber
Ini adalah penyortir generik. Disebut dengan sakelar di bawah ini.
dvm.PagePermissions adalah properti pada ViewModel tipe T saya dalam hal ini T adalah kelas model EF6 yang disebut page_permission.
dvm.UserNameSortDir adalah properti string pada viewmodel yang memegang arah pengurutan berikutnya. Yang benar-benar digunakan dalam tampilan.
sumber