Konvertieren Sie C# LINQ in Dictionary

Konvertieren Sie C Linq In Dictionary



Erstellen Sie in C# LINQ ein Wörterbuch aus System.Collections.Generic.IEnumerable ist mit der Methode ToDictionary() möglich. Diese Methode erstellt ein Wörterbuch mit aus dem angegebenen . Der System.ArgumentNullException wird ausgelöst, wenn die Datenquelle, keySelector oder elementSelector null ist. Wenn der keySelector außerdem doppelte Schlüssel für zwei Elemente erzeugt, wird der System.ArgumentException ist geworfen. In diesem Leitfaden besprechen wir, wie man aus der Listendatenquelle ein Wörterbuch erstellt, indem man zwei Methoden überlädt.

Syntax:

1. Wenn Sie ein Wörterbuch gemäß den angegebenen Tastenauswahl- und Elementauswahlfunktionen aus der angegebenen Datenquelle erstellen möchten, überladen Sie die folgende Methode:









Parameter:



    1. Quelle : Quelle kann ein IEnumerable (Liste) sein, in dem das Wörterbuch aus dieser Quelle erstellt wird.
    2. keySelector : Dies ist eine Funktion, die verwendet wird, um den Schlüssel von jedem Element abzurufen.
    3. elementSelector: Dies ist eine Funktion, die zum Abrufen des Elements verwendet wird.
    4. TSource : Dies ist der Typparameter, der den Typ der Datenquelle angibt.
    5. TSchlüssel: Dies ist der Typparameter, der den Typ des Schlüssels angibt.
    6. TElement : Dies ist der Typparameter, der den Typ des Elements angibt.

2. Wenn Sie ein Wörterbuch gemäß der angegebenen Schlüsselauswahlfunktion aus der angegebenen Datenquelle erstellen möchten, überladen Sie die folgende Methode:





Parameter:



    1. Quelle : Quelle kann ein IEnumerable (Liste) sein, in dem das Wörterbuch aus dieser Quelle erstellt wird.
    2. keySelector : Dies ist eine Funktion, die verwendet wird, um den Schlüssel von jedem Element abzurufen.
    3. TQuelle: Dies bezieht sich auf die Art der Datenquelle.
    4. TKey : Gibt den Typ des Schlüssels an.

Beispiel 1: Angegebene Schlüsselauswahl- und Elementauswahlfunktion

Erstellen Sie eine Liste mit dem Typ „Konto“, die vier Attribute (Acc_ID, Acc_Name, Branche, Umsatz) mit fünf Datensätzen enthält.

1. Erstellen Sie ein Wörterbuch aus der vorherigen Liste mit dem Schlüssel als Acc_ID und dem Wert als Acc_Name.
2. Erstellen Sie ein Wörterbuch aus der vorherigen Liste mit dem Schlüssel Acc_Name und dem Wert Revenue.

verwenden System ;
verwenden System.Linq ;
verwenden System.Collections.Generic ;

Klasse Kontoinformationen
{
öffentlich statisch Leere Hauptsächlich ( )
{
// Liste vom Typ „Konto“ erstellen.
Listendetails = neu Aufführen ( ) ;
// 5 Datensätze zur Liste hinzufügen.
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 1 , Acc_Name = „Linux“ , Industrie = 'Ausbildung' ,Einnahmen = 2500 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 2 , Acc_Name = 'Python' , Industrie = 'Boot Camp' ,Einnahmen = 10000 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 3 , Acc_Name = 'Java' , Industrie = 'Ausbildung' ,Einnahmen = 500 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 4 , Acc_Name = '.NETZ' , Industrie = 'Ausbildung' ,Einnahmen = 2080 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 5 , Acc_Name = 'Orakel' , Industrie = 'Arbeit' ,Einnahmen = 2090 } ) ;

// Erstellen Sie ein Wörterbuch aus der obigen Liste mit dem Schlüssel als Acc_ID und dem Wert als Acc_Name
Konsole . WriteLine ( „ ----Schlüssel als Acc_ID und Wert als Acc_Name----“ ) ;
Wörterbuchaccounts_dict1 = Einzelheiten . Zum Wörterbuch ( J => J . Acc_ID , J => J . Acc_Name ) ;

für jede ( KeyValuePair i In Accounts_dict1 )
{
Konsole . WriteLine ( „Konto-ID:“ + ich . Taste + ' Kontobezeichnung :' + ich . Wert ) ;
}

// Erstellen Sie ein Wörterbuch aus der obigen Liste mit dem Schlüssel als Acc_Name und dem Wert als Umsatz
Konsole . WriteLine ( „ ----Schlüssel als Acc_Name und Wert als Umsatz----“ ) ;
Wörterbuch Accounts_dict2 = Einzelheiten . Zum Wörterbuch ( l => l . Acc_Name , l => l . Einnahmen ) ;

für jede ( Schlüsselwertpaar k In Accounts_dict2 )
{
Konsole . WriteLine ( 'Kontobezeichnung :' + k . Taste + „Konto-Umsatz:“ + k . Wert ) ;
}

}
}

// Klasse mit dem Namen „Konto“ mit vier Attributen erstellen
öffentlich Klasse Konto
{
öffentlich int Acc_ID { erhalten ; Satz ; }
öffentlich Zeichenfolge Acc_Name { erhalten ; Satz ; }
öffentlich Zeichenfolge Industrie { erhalten ; Satz ; }
öffentlich int Einnahmen { erhalten ; Satz ; }
}

Ausgang:

Erläuterung:

1. Erstellen Sie eine Klasse mit dem Namen „Konto“ mit vier Attributen.

2. Erstellen Sie in der Hauptklasse eine Liste vom Typ „Konto“ und fügen Sie darin fünf Datensätze ein.

3. Erstellen Sie ein Wörterbuch aus der vorherigen Liste mit dem Schlüssel als Acc_ID und dem Wert als Acc_Name. Hier geben wir den TKey als int und das TElement als string an. Innerhalb der ToDictionary()-Methode übergeben wir die Acc_ID im keySelector und den Acc_Name im elementSelector. Schließlich verwenden wir die „foreach“-Schleife, um das Wörterbuch zu iterieren und die Schlüssel und Werte mithilfe der Schlüssel- und Werteigenschaften zurückzugeben.

4. Erstellen Sie ein Wörterbuch aus der vorherigen Liste mit dem Schlüssel Acc_Name und dem Wert Revenue. Hier geben wir den TKey als string und das TElement als int an. Innerhalb der ToDictionary()-Methode übergeben wir den Acc_Name im keySelector und den Revenue im elementSelector. Schließlich verwenden wir die „foreach“-Schleife, um das Wörterbuch zu iterieren und die Schlüssel und Werte mithilfe der Schlüssel- und Werteigenschaften zurückzugeben.

Beispiel 2: Angegebener Schlüsselselektor

Verwenden Sie den vorherigen Code und erstellen Sie ein Wörterbuch aus der vorherigen Liste mit dem Schlüssel Acc_ID.

verwenden System ;
verwenden System.Linq ;
verwenden System.Collections.Generic ;

Klasse Kontoinformationen
{
öffentlich statisch Leere Hauptsächlich ( )
{
// Liste vom Typ „Konto“ erstellen.
Listendetails = neu Aufführen ( ) ;
// 5 Datensätze zur Liste hinzufügen.
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 1 , Acc_Name = „Linux“ , Industrie = 'Ausbildung' ,Einnahmen = 2500 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 2 , Acc_Name = 'Python' , Industrie = 'Boot Camp' ,Einnahmen = 10000 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 3 , Acc_Name = 'Java' , Industrie = 'Ausbildung' ,Einnahmen = 500 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 4 , Acc_Name = '.NETZ' , Industrie = 'Ausbildung' ,Einnahmen = 2080 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 5 , Acc_Name = 'Orakel' , Industrie = 'Arbeit' ,Einnahmen = 2090 } ) ;

// Erstellen Sie ein Wörterbuch aus der obigen Liste mit dem Schlüssel Acc_ID.
Wörterbuch Accounts_dict = Einzelheiten . Zum Wörterbuch ( J => J . Acc_ID ) ;
für jede ( KeyValuePair i In Accounts_dict )
{
Konsole . WriteLine ( 'Taste:' + ich . Taste + '-->  Kontoname:' + ich . Wert . Acc_Name
+ 'Account-Branche:' + ich . Wert . Industrie
+ „Konto-Umsatz:“ + ich . Wert . Einnahmen ) ;
}

}
}

// Klasse mit dem Namen „Konto“ mit vier Attributen erstellen
öffentlich Klasse Konto
{
öffentlich int Acc_ID { erhalten ; Satz ; }
öffentlich Zeichenfolge Acc_Name { erhalten ; Satz ; }
öffentlich Zeichenfolge Industrie { erhalten ; Satz ; }
öffentlich int Einnahmen { erhalten ; Satz ; }
}

Ausgang:

Erläuterung:

Hier erstellen wir ein Wörterbuch mit dem Schlüssel Acc_ID. Dies fungiert als Schlüssel für jeden Datensatz im Wörterbuch, den wir aus der Liste erstellt haben. Danach verwenden wir die „foreach“-Schleife, um die Schlüssel und Werte (mit Attributen) mithilfe der Schlüssel- und Werteigenschaften abzurufen.

Beispiel 3: Doppelte Schlüssel – ArgumentException

Erstellen Sie eine Liste mit zwei Datensätzen und versuchen Sie, sie mit der Acc_ID als Schlüssel in ein Wörterbuch umzuwandeln.

verwenden System ;
verwenden System.Linq ;
verwenden System.Collections.Generic ;

Klasse Kontoinformationen
{
öffentlich statisch Leere Hauptsächlich ( )
{
// Liste vom Typ „Konto“ erstellen.
Listendetails = neu Aufführen ( ) ;
// 2 Datensätze zur Liste hinzufügen.
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 1 , Acc_Name = „Linux“ , Industrie = 'Ausbildung' ,Einnahmen = 2500 } ) ;
Einzelheiten . Hinzufügen ( neu Konto { Acc_ID = 1 , Acc_Name = 'Python' , Industrie = 'Boot Camp' ,Einnahmen = 10000 } ) ;

// Versuchen Sie, aus der obigen Liste ein Wörterbuch mit dem Schlüssel Acc_ID zu erstellen.
Wörterbuch Accounts_dict = Einzelheiten . Zum Wörterbuch ( J => J . Acc_ID ) ;

}
}

// Klasse mit dem Namen „Konto“ mit vier Attributen erstellen
öffentlich Klasse Konto
{
öffentlich int Acc_ID { erhalten ; Satz ; }
öffentlich Zeichenfolge Acc_Name { erhalten ; Satz ; }
öffentlich Zeichenfolge Industrie { erhalten ; Satz ; }
öffentlich int Einnahmen { erhalten ; Satz ; }
}

Ausnahme:

Eine nicht behandelte Ausnahme, nämlich System.ArgumentException, wird ausgelöst, da der Schlüssel in beiden Acc_IDs doppelt vorhanden ist (1).

Beispiel 4: Nullquelle – ArgumentNullException

Erstellen Sie eine Liste mit dem Typ „Konto“ und weisen Sie ihr Null zu. Versuchen Sie, aus der vorherigen Liste ein Wörterbuch mit dem Schlüssel Acc_ID zu erstellen.

verwenden System ;
verwenden System.Linq ;
verwenden System.Collections.Generic ;

Klasse Kontoinformationen
{
öffentlich statisch Leere Hauptsächlich ( )
{
// Liste vom Typ „Konto“ erstellen und ihr null zuweisen.
Listendetails = Null ;

// Versuchen Sie, aus der obigen Liste ein Wörterbuch mit dem Schlüssel Acc_ID zu erstellen.
Wörterbuch Accounts_dict = Einzelheiten . Zum Wörterbuch ( J => J . Acc_ID ) ;

}
}

// Klasse mit dem Namen „Konto“ mit vier Attributen erstellen
öffentlich Klasse Konto
{
öffentlich int Acc_ID { erhalten ; Satz ; }
öffentlich Zeichenfolge Acc_Name { erhalten ; Satz ; }
öffentlich Zeichenfolge Industrie { erhalten ; Satz ; }
öffentlich int Einnahmen { erhalten ; Satz ; }
}

Ausnahme:

Eine nicht behandelte Ausnahme, nämlich System.ArgumentNullException, wird ausgelöst, da die Liste null ist.

Abschluss

Wir haben gelernt, wie man mithilfe der ToDictionary()-Methode in C# LINQ ein Wörterbuch aus IEnumerable (hier ist es eine Liste) erstellt. Diese Methode kann auf zwei Arten überladen werden. Wir haben beide Methoden anhand von Beispielen besprochen. Außerdem haben wir die beiden Ausnahmefälle kennengelernt, die von dieser Methode ausgelöst werden, wenn die Datenquelle/keySelector/elementSelector null ist und die Schlüssel doppelt vorhanden sind.