首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Linq将包含原语数据的对象列表分组到新的分组对象列表中

基础概念

LINQ(Language Integrated Query,语言集成查询)是.NET框架中的一种技术,它允许开发者以声明性方式编写查询,并对数据进行操作。LINQ可以用于集合、数据库、XML文档等多种数据源。

相关优势

  1. 类型安全:LINQ查询是类型安全的,编译器可以在编译时检查错误。
  2. 简洁易读:LINQ查询语法简洁,易于阅读和维护。
  3. 延迟执行:LINQ查询是延迟执行的,只有在需要结果时才会执行查询。
  4. 集成性:LINQ可以与多种数据源无缝集成,包括集合、数据库、XML文档等。

类型

LINQ主要有以下几种类型:

  1. LINQ to Objects:用于内存中的集合。
  2. LINQ to SQL:用于关系数据库。
  3. LINQ to XML:用于XML文档。
  4. LINQ to Entities:用于Entity Framework。

应用场景

LINQ广泛应用于数据查询、数据转换、数据过滤等场景。例如,从数据库中查询数据并进行分组、排序、过滤等操作。

示例代码

假设我们有一个包含原语数据的对象列表,并希望将其分组到新的分组对象列表中。以下是一个示例代码:

代码语言:txt
复制
using System;
using System.Collections.Generic;
using System.Linq;

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class GroupedPerson
{
    public int AgeGroup { get; set; }
    public List<Person> People { get; set; }
}

public class Program
{
    public static void Main()
    {
        List<Person> people = new List<Person>
        {
            new Person { Name = "Alice", Age = 25 },
            new Person { Name = "Bob", Age = 30 },
            new Person { Name = "Charlie", Age = 25 },
            new Person { Name = "David", Age = 30 }
        };

        var groupedPeople = people
            .GroupBy(p => p.Age / 10 * 10) // 按年龄分组,每组10年
            .Select(g => new GroupedPerson
            {
                AgeGroup = g.Key,
                People = g.ToList()
            })
            .ToList();

        foreach (var group in groupedPeople)
        {
            Console.WriteLine($"Age Group: {group.AgeGroup}");
            foreach (var person in group.People)
            {
                Console.WriteLine($"  {person.Name}, {person.Age}");
            }
        }
    }
}

解释

  1. 定义类:定义了Person类和GroupedPerson类。
  2. 创建数据:创建了一个包含Person对象的列表。
  3. 分组:使用GroupBy方法按年龄分组,每组10年。
  4. 选择和转换:使用Select方法将分组结果转换为GroupedPerson对象列表。
  5. 输出结果:遍历并输出分组结果。

参考链接

通过以上示例和解释,你应该能够理解如何使用LINQ将包含原语数据的对象列表分组到新的分组对象列表中。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券