C# LINQ常用语法及实际应用示例

 更新时间:2025年10月21日 14:46:04   作者:酥酥禾  
LINQ (Language Integrated Query) 是C#中用于数据查询的语法,可以查询各种数据源(数组、集合、数据库等),本文给大家介绍C# LINQ常用语法,感兴趣的朋友跟随小编一起看看吧

1. LINQ 基础概念

LINQ (Language Integrated Query) 是 C# 中用于数据查询的语法,可以查询各种数据源(数组、集合、数据库等)。

2. 基本语法结构

查询表达式语法(类似 SQL)

from 变量 in 数据源
where 条件
orderby 字段
select 结果

方法语法(使用 Lambda 表达式)

数据源.方法(参数 => 表达式)

3. 常用的 LINQ 方法

筛选数据 - Where

// 查询表达式
var result = from num in numbers
             where num > 5
             select num;
// 方法语法
var result = numbers.Where(num => num > 5);

排序 - OrderBy / OrderByDescending

// 升序
var result = numbers.OrderBy(num => num);
// 降序
var result = numbers.OrderByDescending(num => num);
// 多字段排序
var result = students.OrderBy(s => s.Age)
                    .ThenBy(s => s.Name);

选择数据 - Select

// 选择特定字段
var names = students.Select(s => s.Name);
// 创建新对象
var studentInfo = students.Select(s => new {
    Name = s.Name,
    Age = s.Age
});

其他常用方法

// 取前N个
var top3 = numbers.Take(3);
// 跳过前N个
var afterFirst3 = numbers.Skip(3);
// 判断是否存在
bool hasEven = numbers.Any(n => n % 2 == 0);
// 判断是否所有元素都满足条件
bool allPositive = numbers.All(n => n > 0);
// 获取第一个元素
var first = numbers.First();
// 获取最后一个元素
var last = numbers.Last();
// 计数
int count = numbers.Count();
// 求和
int sum = numbers.Sum();
// 最大值
int max = numbers.Max();
// 最小值
int min = numbers.Min();
// 平均值
double average = numbers.Average();

4. 实际应用示例

学生数据示例

class Student
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Score { get; set; }
}
List<Student> students = new List<Student>
{
    new Student { Name = "Alice", Age = 20, Score = 85 },
    new Student { Name = "Bob", Age = 22, Score = 90 },
    new Student { Name = "Charlie", Age = 19, Score = 78 }
};

常见查询操作

// 1. 筛选年龄大于20的学生
var olderStudents = students.Where(s => s.Age > 20);
// 2. 按分数降序排序
var sortedByScore = students.OrderByDescending(s => s.Score);
// 3. 选择学生姓名和分数
var nameScores = students.Select(s => new { 
    s.Name, 
    s.Score 
});
// 4. 获取分数最高的学生
var topStudent = students.OrderByDescending(s => s.Score).First();
// 5. 计算平均分
var averageScore = students.Average(s => s.Score);
// 6. 分组查询
var groupByAge = students.GroupBy(s => s.Age);

5. 在数组和集合中的应用

数组操作

csharp
int[] numbers = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
// 获取偶数
var evenNumbers = numbers.Where(n => n % 2 == 0);
// 平方每个数
var squares = numbers.Select(n => n * n);
// 获取大于5的数并排序
var result = numbers.Where(n => n > 5)
                   .OrderBy(n => n);

字符串数组

string[] names = { "Alice", "Bob", "Charlie", "David" };
// 查找以A开头的名字
var aNames = names.Where(name => name.StartsWith("A"));
// 按长度排序
var sortedByLength = names.OrderBy(name => name.Length);

到此这篇关于C# LINQ常用语法的文章就介绍到这了,更多相关C# LINQ语法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中执行SQL的几种方法讲解

    C#中执行SQL的几种方法讲解

    这篇文章介绍了C#中执行SQL的几种方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-04-04
  • C#实现将PPT转换成HTML的方法

    C#实现将PPT转换成HTML的方法

    这篇文章主要介绍了C#实现将PPT转换成HTML的方法,非常实用的功能,需要的朋友可以参考下
    2014-08-08
  • C#多线程之线程控制详解

    C#多线程之线程控制详解

    这篇文章主要为大家详细介绍了C#多线程之线程控制的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • C#编程自学之流程控制语句

    C#编程自学之流程控制语句

    本文主要介绍流程控制语句,主要包括条件控制语句和循环控制语句的使用。读者学习本文后,应该熟练掌握C#控制语句的主要用途和使用方法,了解这些控制语句的区别。
    2015-10-10
  • 浅谈C#索引器

    浅谈C#索引器

    这篇文章主要简单介绍C#索引器,索引器使你可从语法上方便地创建类、结构或接口,以便客户端应用程序可以像访问数组一样访问它们。编译器将生成一个 Item 属性和适当的访问器方法,在主要目标是封装内部集合或数组的类型中,常常要实现索引器,下面我们一起来看看具体内容吧
    2021-11-11
  • 分享两种实现Winform程序的多语言支持的多种解决方案

    分享两种实现Winform程序的多语言支持的多种解决方案

    本篇文章主要介绍了分享两种实现Winform程序的多语言支持的多种解决方案,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。
    2017-02-02
  • C#跨窗体操作(引用传递) 实例代码

    C#跨窗体操作(引用传递) 实例代码

    现在给大家介绍一种最简单的跨窗体操作,WinForm的窗体是一个类,C#的类是引用类型,那么我们应该可以将WinForm窗体类进行传递,那不就可以进行操作了么?
    2013-03-03
  • c# 泛型类型参数与约束的深入分析

    c# 泛型类型参数与约束的深入分析

    本篇文章是对c#中泛型类型参数与约束进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c#基础之数组与接口使用示例(遍历数组 二维数组)

    c#基础之数组与接口使用示例(遍历数组 二维数组)

    本文主要介绍了c#基础知识中的数组与接口使用方法,结合示例,大家一看就明白
    2014-01-01
  • C#中获取程序路径的几种方法及其区别说明

    C#中获取程序路径的几种方法及其区别说明

    这篇文章主要介绍了C#中获取程序路径的几种方法及其区别说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07

最新评论