Heim >Backend-Entwicklung >C++ >Wie kann ich Objekte nach einem Schlüssel gruppieren, das LINQ in C#verwendet?
Angenommen, wir haben eine Klasse namens Person:
<code class="language-csharp">class Person { public int PersonID; public string Car; // 将car改为Car,符合C#命名规范 }</code>Wir haben auch eine Liste von Personenobjekten:
<code class="language-csharp">List<Person> persons;</code>Diese Liste kann mehrere Instanzen mit derselben Person ID enthalten. Zum Beispiel:
<code class="language-csharp">persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };</code>Unser Ziel ist es, diese Objekte nach Personid zu gruppieren und eine Liste aller Autos zu erhalten, die allen gehören. Die erwarteten Ergebnisse sind unten dargestellt:
<code class="language-csharp">class Result { public int PersonID; public List<string> Cars; }</code>Nach der Gruppierung erhalten wir:
<code class="language-csharp">// 示例结果,实际结果由LINQ查询生成 var results = new List<Result>() { new Result { PersonID = 1, Cars = new List<string> { "Ferrari", "BMW" } }, new Result { PersonID = 2, Cars = new List<string> { "Audi" } } };</code>Aus diesem Grund können wir die Gruppe von Linq GroupBy Methode verwenden:
<code class="language-csharp">var results = from p in persons group p.Car by p.PersonID into g select new Result { PersonID = g.Key, Cars = g.ToList() };</code>In der Gruppenklausel geben wir Persönlichkeit als Gruppenschlüssel an und projizierten die Autoeigenschaft. Die erzeugte Sequenz wird eine Reihe von Schlüssel sein, die mit ihren jeweiligen Autos verbunden sind.
Oder Sie können das Such -Wörterbuch verwenden, um dieselben Ergebnisse zu erzielen:
<code class="language-csharp">var carsByPersonId = persons.ToLookup(p => p.PersonID, p => p.Car);</code>Dies erstellt ein Wörterbuch, in dem der Schlüssel personid ist und der Wert der Autoliste aller ist. Um nach einem bestimmten Auto zu suchen, können Sie:
verwenden
<code class="language-csharp">// 这将返回一个空序列,对于查找中不存在的personId var carsForPerson = carsByPersonId[personId];</code>Durch die Verwendung dieser Technologien können Sie C#und Linq verwenden, um die öffentlichen Bonding -Objekte effektiv zu befolgen und die Liste der verwandten Daten auf einfache und effiziente Weise abzurufen. Das Codebeispiel wurde verbessert, was eher den Codierungsspezifikationen von C#entspricht.
Das obige ist der detaillierte Inhalt vonWie kann ich Objekte nach einem Schlüssel gruppieren, das LINQ in C#verwendet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!