📜  LINQ教程(1)

📅  最后修改于: 2023-12-03 15:02:41.755000             🧑  作者: Mango

LINQ教程

LINQ(Language Integrated Query,语言集成查询)是一种用于.NET框架的查询和操作数据的统一编程模型。它提供了一种简洁、直观的方式来查询各种数据源,包括集合、数据库、XML文档等。本教程将引导程序员了解LINQ的基本概念和用法。

目录
LINQ简介

LINQ是一种编程范式,它提供了一种统一的查询语言来处理各种数据源。使用LINQ,程序员可以像查询数据库一样查询集合数据,无需关心具体的实现细节。LINQ还支持链式调用,可以对查询结果进行进一步的筛选、排序、分组和聚合操作。

LINQ查询

LINQ查询通过使用查询表达式或方法语法来筛选和投影数据。下面是一个示例,演示如何使用LINQ查询从集合中筛选出满足条件的元素:

var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = from num in numbers
                  where num % 2 == 0
                  select num;

foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}

以上代码将在控制台输出2, 4, 6, 8, 10,即集合中的偶数。

更多关于LINQ查询的信息,请参考查询表达式方法语法的文档。

LINQ方法

LINQ提供了一系列方法来处理集合数据,包括筛选、投影、排序、分组、聚合等操作。下面是一些常用的LINQ方法示例:

筛选数据
var numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var evenNumbers = numbers.Where(num => num % 2 == 0);

foreach (var num in evenNumbers)
{
    Console.WriteLine(num);
}
投影数据
var products = new List<Product> { new Product { Name = "Apple", Price = 1.2 },
                                   new Product { Name = "Banana", Price = 0.9 },
                                   new Product { Name = "Orange", Price = 1.5 } };
var productNames = products.Select(p => p.Name);

foreach (var name in productNames)
{
    Console.WriteLine(name);
}

更多关于LINQ方法的信息,请参考标准查询操作的文档。

LINQ连接

LINQ连接用于将两个数据源按照某种关联条件进行连接操作。下面是一个示例,演示如何使用LINQ连接将两个集合中的元素进行关联:

var customers = new List<Customer> { new Customer { Id = 1, Name = "Alice" },
                                     new Customer { Id = 2, Name = "Bob" },
                                     new Customer { Id = 3, Name = "Charlie" } };
var orders = new List<Order> { new Order { Id = 1, Product = "Apple", CustomerId = 1 },
                               new Order { Id = 2, Product = "Banana", CustomerId = 2 },
                               new Order { Id = 3, Product = "Orange", CustomerId = 1 } };

var query = from customer in customers
            join order in orders on customer.Id equals order.CustomerId
            select new { customer.Name, order.Product };

foreach (var result in query)
{
    Console.WriteLine($"Customer: {result.Name}, Product: {result.Product}");
}

以上代码将输出以下结果:

Customer: Alice, Product: Apple
Customer: Bob, Product: Banana
Customer: Alice, Product: Orange

更多关于LINQ连接的信息,请参考连接操作的文档。

LINQ分组

LINQ分组用于将数据按照某个属性进行分组操作。下面是一个示例,演示如何使用LINQ分组将学生按照年级进行分组:

var students = new List<Student> { new Student { Name = "Alice", Grade = 1 },
                                   new Student { Name = "Bob", Grade = 2 },
                                   new Student { Name = "Charlie", Grade = 1 } };

var query = from student in students
            group student by student.Grade into g
            select new { Grade = g.Key, Students = g };

foreach (var group in query)
{
    Console.WriteLine($"Grade: {group.Grade}");
    foreach (var student in group.Students)
    {
        Console.WriteLine($"Student Name: {student.Name}");
    }
}

以上代码将输出以下结果:

Grade: 1
Student Name: Alice
Student Name: Charlie
Grade: 2
Student Name: Bob

更多关于LINQ分组的信息,请参考分组操作的文档。

LINQ排序

LINQ排序用于对数据进行排序操作。下面是一个示例,演示如何使用LINQ排序对一组整数进行升序排序:

var numbers = new List<int> { 3, 1, 4, 1, 5, 9, 2, 6, 5 };
var sortedNumbers = numbers.OrderBy(num => num);

foreach (var num in sortedNumbers)
{
    Console.WriteLine(num);
}

以上代码将输出以下结果:

1
1
2
3
4
5
5
6
9

更多关于LINQ排序的信息,请参考排序操作的文档。

LINQ聚合

LINQ聚合用于对数据进行汇总操作,例如计算总和、平均值、最大值、最小值等。下面是一个示例,演示如何使用LINQ聚合计算一组数字的总和:

var numbers = new List<int> { 1, 2, 3, 4, 5 };
var sum = numbers.Sum();

Console.WriteLine(sum); // 输出15

更多关于LINQ聚合的信息,请参考聚合操作的文档。

以上内容涵盖了LINQ的基本概念和用法。通过使用LINQ,程序员可以更加方便地处理各种数据源,提高开发效率。

请参考官方文档以获取更详细的LINQ信息。