Verwenden Sie das LINQ -Schaltfläche Gruppenobjekt
In Objekt -orientiertem Programmieren ist sie je nach öffentlichen Attributen oder wichtigen Gruppenobjekten sehr nützlich. In diesem Beispiel wird erläutert, wie die LINQ (Sprachintegration) gemäß dem personenbezogenen Gruppenobjekt verwendet und eine mit allen verknüpfte Autoliste erhalten wird.
Angenommen, wir haben eine Klasse namens Person:
class Person
{
public int PersonID;
public string Car; // 将car改为Car,符合C#命名规范
}
Nach dem Login kopieren
Wir haben auch eine Liste von Personenobjekten:
List<Person> persons;
Nach dem Login kopieren
Diese Liste kann mehrere Instanzen mit derselben Person ID enthalten. Zum Beispiel:
persons = new List<Person>()
{
new Person { PersonID = 1, Car = "Ferrari" },
new Person { PersonID = 1, Car = "BMW" },
new Person { PersonID = 2, Car = "Audi" }
};
Nach dem Login kopieren
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:
class Result
{
public int PersonID;
public List<string> Cars;
}
Nach dem Login kopieren
Nach der Gruppierung erhalten wir:
// 示例结果,实际结果由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" } }
};
Nach dem Login kopieren
Aus diesem Grund können wir die Gruppe von Linq GroupBy Methode verwenden:
var results = from p in persons
group p.Car by p.PersonID into g
select new Result { PersonID = g.Key, Cars = g.ToList() };
Nach dem Login kopieren
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:
var carsByPersonId = persons.ToLookup(p => p.PersonID, p => p.Car);
Nach dem Login kopieren
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
// 这将返回一个空序列,对于查找中不存在的personId
var carsForPerson = carsByPersonId[personId];
Nach dem Login kopieren
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!