Prasības: Izlasiet citu cilvēku tehniskos emuārus, konstatējiet, ka dažas kolekcijas sauc par ToLookup metodi, šī metode nav pieskarta, un pēc tam vaicājiet attiecīgajos materiālos, lai uzzinātu šīs paplašinājuma metodes izmantošanu. Metode ToLookup atgriež vērtību ToLookup<TSource, TKey> vārdnīcu viens pret daudziem, lai kartētu atslēgas uz vērtību kolekciju.
GroupBy salīdzinājumā ar ToLookup
GroupBy un ToLookup ir LINQ paplašinājuma metodes kolekciju grupēšanai, un galvenā atšķirība starp abām ir atgriešanas veids un lietojums.
Metode GroupBy atgriež objektu IEnumerable<IGrouping<TKey, TElement>>, kur TKey ir tips, kas apzīmē grupēšanas atslēgu, un TElement ir tips, kas apzīmē elementa tipu. Šī metode grupē kolekciju atbilstoši norādītajam atslēgas atlasītājam un atgriež grupēšanas rezultātu kā IGrouping<TKey, TElement> objektu secību. IGrouping<TKey, TElement> objekti ir elementu kolekcija ar vienu un to pašu atslēgu. Varat izmantot foreach cilpas vai LINQ vaicājumus, lai atkārtotu grupētos rezultātus. GroupBy metode ir aizkavēta izpildes operācija, kas izpilda faktisko grupēšanas operāciju tikai tad, kad sākat atkārtot tās rezultātus.
Metode ToLookup atgriež objektu ILookup<TKey, TElement> kur TKey ir tips, kas apzīmē grupēšanas atslēgu, un TElement ir tips, kas apzīmē elementa tipu. Metode grupē kolekciju atbilstoši norādītajam atslēgas atlasītājam un atgriež grupēšanas rezultātu kā objektu ILookup<TKey, TElement>. ILookup<TKey, TElement> objekti ir elementu kolekcija ar vienu un to pašu atslēgu. Lai piekļūtu grupētajiem rezultātiem, varat izmantot indeksētāju vai cilpu foreach. Atšķirībā no GroupBy, ToLookup ir tūlītēja darbība, kas nekavējoties izpilda grupēšanas darbību un atgriež rezultātu, kad tā tiek izsaukta.
Piemērs: Students ir klasē, un klase atbilst vairākiem studentiem. Skolēnu kolekcija satur informāciju par klasi, un katras klases (vai noteiktas klases) studenti tiek izvadīti atbilstoši klases grupām.
Kods ir šāds:
Kā parādīts zemāk:
Atsauce:Hipersaites pieteikšanās ir redzama.
|