linq:通过键对GroupBy
和ToLookup
。
>让我们用类说明:Person
>
class Person { public int PersonID { get; set; } public string Car { get; set; } }
>对象的列表,其中有些人可能有多个条目(例如,拥有多辆车):Person
List<Person> persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };
对这些人进行分组并列出他们的汽车,我们使用linq的PersonID
方法:GroupBy
var results = persons.GroupBy(p => p.PersonID, p => p.Car);
是一个results
。每个IEnumerable<IGrouping<int, string>>
代表一个具有共同IGrouping
(通过PersonID
访问)的组,并包含一系列汽车字符串(result.Key
)。 访问此数据:result
foreach (var result in results) { int personID = result.Key; List<string> cars = result.ToList(); // Convert to List for easier access Console.WriteLine($"Person ID: {personID}, Cars: {string.Join(", ", cars)}"); }
ToLookup
创建一个字典的结构(ILookup<int, string>
):
var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);
>
和List<string> carsForPerson1 = carsByPersonID[1].ToList(); Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");
提供直接字典式访问,而GroupBy
>为复杂的分组方案提供了更大的灵活性。ToLookup
以上是如何使用LINQ的GroupBy和Tolookup方法通过特定键进行分组数据?的详细内容。更多信息请关注PHP中文网其他相关文章!