欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 金融 > c# LINQ表达式

c# LINQ表达式

2025/4/19 12:34:31 来源:https://blog.csdn.net/u013715860/article/details/147156422  浏览:    关键词:c# LINQ表达式

LINQ(Language Integrated Query)即语言集成查询,是 C# 的一项强大特性,它允许你使用类似 SQL 的语法对各种数据源(如集合、数据库等)进行查询操作。下面为你详细介绍 LINQ 的一些常见用法:

1. 查询语法

查询语法类似于 SQL,使用fromwhereselect等关键字来构建查询。

csharp

using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(){// 示例数据List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };// 查询所有偶数var evenNumbers = from num in numberswhere num % 2 == 0select num;// 输出结果foreach (var num in evenNumbers){Console.WriteLine(num);}}
}

在这个例子中,from num in numbers指定了数据源,where num % 2 == 0筛选出偶数,select num选择要返回的元素。

2. 方法语法

方法语法使用扩展方法来构建查询,例如WhereSelect等。

csharp

using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(){// 示例数据List<int> 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);}}
}

这里使用Where方法筛选出偶数,num => num % 2 == 0是一个 Lambda 表达式,用于定义筛选条件。

3. 投影操作

投影操作可以将查询结果转换为新的类型。

csharp

using System;
using System.Collections.Generic;
using System.Linq;class Person
{public string Name { get; set; }public int Age { get; set; }
}class Program
{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 = 35 }};// 投影操作,只选择姓名var names = from person in peopleselect person.Name;// 输出结果foreach (var name in names){Console.WriteLine(name);}}
}

这个例子中,使用select person.NamePerson对象投影为姓名。

4. 分组操作

分组操作可以将数据按照某个键进行分组。

csharp

using System;
using System.Collections.Generic;
using System.Linq;class Program
{static void Main(){// 示例数据List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };// 按奇偶性分组var groups = from num in numbersgroup num by num % 2;// 输出结果foreach (var group in groups){Console.WriteLine($"Key: {group.Key}");foreach (var num in group){Console.WriteLine(num);}}}
}

这里使用group num by num % 2将数字按奇偶性分组。

5. 连接操作

连接操作可以将两个数据源根据某个条件进行连接。

csharp

using System;
using System.Collections.Generic;
using System.Linq;class Department
{public int Id { get; set; }public string Name { get; set; }
}class Employee
{public int Id { get; set; }public string Name { get; set; }public int DepartmentId { get; set; }
}class Program
{static void Main(){// 示例数据List<Department> departments = new List<Department>{new Department { Id = 1, Name = "HR" },new Department { Id = 2, Name = "IT" }};List<Employee> employees = new List<Employee>{new Employee { Id = 1, Name = "Alice", DepartmentId = 1 },new Employee { Id = 2, Name = "Bob", DepartmentId = 2 }};// 连接操作var query = from emp in employeesjoin dept in departments on emp.DepartmentId equals dept.Idselect new { EmployeeName = emp.Name, DepartmentName = dept.Name };// 输出结果foreach (var result in query){Console.WriteLine($"Employee: {result.EmployeeName}, Department: {result.DepartmentName}");}}
}

这个例子中,使用join关键字将EmployeeDepartment两个集合根据DepartmentId进行连接。

LINQ 提供了丰富的查询操作,能极大地简化数据处理和查询的代码,提高开发效率。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词