Požiadavky: Prečítajte si technické blogy iných ľudí, zistite, že niektoré kolekcie nazývajú metódu ToLookup, táto metóda nebola používaná, a potom sa dopytujte v relevantných materiáloch, aby ste sa dozvedeli použitie tejto metódy rozšírenia. Metóda ToLookup vracia hodnotu ToLookup<TSource, TKey> slovníka jeden ku mnohým na mapovanie kľúčov na kolekciu hodnôt.
GroupBy vs. ToLookup
GroupBy a ToLookup sú obe LINQ rozšírenia na zoskupovanie kolekcií a hlavný rozdiel medzi nimi je typ návratu a použitie.
Metóda GroupBy vráti objekt IEnumerable<IGrouping<TKey, TElement>> kde TKey je typ, ktorý reprezentuje zoskupovací kľúč a TElement je typ, ktorý reprezentuje typ prvku. Táto metóda zoskupuje kolekciu podľa špecifikovaného výberu klávesov a vracia výsledok zoskupenia ako sekvenciu objektov IGrouping<TKey, TElement>. IGrouping<TKey, TElement> objekty predstavujú kolekciu prvkov s rovnakým kľúčom. Na iteráciu cez zoskupené výsledky môžete použiť foreach loops alebo LINQ dotazy. Metóda GroupBy je oneskorená vykonávacia operácia, ktorá vykoná skutočnú zoskupovaciu operáciu až vtedy, keď začnete iterovať jej výsledky.
Metóda ToLookup vráti objekt ILookup<TKey, TElement>, kde TKey je typ, ktorý reprezentuje zoskupovací kľúč, a TElement je typ, ktorý reprezentuje typ prvku. Metóda zoskupuje kolekciu podľa špecifikovaného výberu klávesov a vracia výsledok zoskupenia ako objekt ILospoj<TKey, TElement>. Objekty ILookup<TKey, TElement> predstavujú kolekciu prvkov s rovnakým kľúčom. Môžete použiť indexer alebo foreach loop na prístup k zoskupeným výsledkom. Na rozdiel od GroupBy je ToLookup okamžitá akcia, ktorá okamžite vykoná zoskupovaciu akciu a po vyvolaní vráti výsledok.
Príklad: Študent je v triede a trieda zodpovedá viacerým študentom. Študentská kolekcia obsahuje informácie o triedach a študenti každej triedy (alebo špecifikovanej triedy) sú vypisovaní podľa skupín tried.
Kód je nasledovný:
Ako je uvedené nižšie:
Referencia:Prihlásenie na hypertextový odkaz je viditeľné.
|