【C#】LINQ

LINQ

LINQ(语言集成查询)是C#和VB.NET中的统一查询语法,用于从不同的源和格式检索数据。它集成在C#或VB中,从而消除了编程语言和数据库之间的不匹配,并为不同类型的数据源提供了单个查询接口。

LINQ查询语法

LINQ的查询语法与SQL相同,以from子句开头,可以以select或groupby子句结尾。

csharp 复制代码
var result = from product in products
             where product.Price > 100
             orderby product.Name
             select product;

比较适合复杂的多表连接查询、分表查询、可读性好。

LINQ方法语法

方法语法(也称为连贯语法)使用Enumerable 或 Queryable静态类中包含的扩展方法。方法语法包括扩展方法和 Lambda 表达式。

csharp 复制代码
var result = products
    .Where(product => product.Price > 100)
    .OrderBy(product => product.Name);

适合简单的单表操作,使用某些只有方法语法的操作符(如First(), Single()等)。

以上两者在性能上没有区别,因为查询语句在编译时会被转换为对应的方法调用。

嵌入委托方法

可以通过委托来描述筛选条件,方便复用。

csharp 复制代码
// 定义委托
Func<Student, bool> isTeenager = s => s.Age > 12 && s.Age < 20;

// 使用方法语法调用
var teenStudents = students.Where(isTeenager)
                          .OrderBy(s => s.Name)
                          .ToList();

// 可以在多个地方复用
var teenCount = students.Count(isTeenager);
var firstTeen = students.FirstOrDefault(isTeenager);
var teenStudents = from s in students where isTeenager(s) select s;

完整的LINQ查询方式矩阵

查询方式 委托变量 内联条件
查询语法 from s in students where isTeenager(s) select s from s in students where s.Age>12 select s
方法语法 students.Where(isTeenager) students.Where(s => s.Age>12)

拓展文章

  1. 菜鸟教程LINQ讲解
相关推荐
Tian_Hang20 分钟前
C++原型模式(Protype)
开发语言·c++·算法
天天讯通28 分钟前
OKCC 呼叫中心安全性能全解析:技术防护与管理措施指南
大数据·开发语言·网络·人工智能·安全·语音识别
xufengzhu1 小时前
第三方 Python 库 redis-py + hiredis 的使用
开发语言·redis·python
jingling5551 小时前
go | 环境安装和快速入门
开发语言·后端·golang
yuan199971 小时前
欧拉梁静力与屈曲计算的 MATLAB 实现(有限差分法 + 解析解)
开发语言·算法·matlab
llxxyy卢1 小时前
polar夏季赛部分题目
开发语言·python
AI玫瑰助手1 小时前
Python模块:from...import...导入指定内容
开发语言·python·信息可视化
石山代码1 小时前
JavaScript 进阶核心知识点
开发语言·javascript·ecmascript
FL16238631292 小时前
[cmake]基于C++使用纯opencv部署ppocrv5v6的onnx模型
开发语言·c++·opencv