C# LINQ查询

一、什么是LINQ

LINQ是Language-Integrated Query的缩写,它可以视为一组语言和框架特性的集合。LINQ可以对本地对象集合或远程数据源进行结构化的类型安全的查询操作。LINQ支持查询任何实现了IEnumerable<T>接口的集合类型,无论是数组、列表还是XML DOM,乃至SQL Server数据库中的数据表这种远程数据源都可以查询。LINQ具有编译时类型检查动态查询组合这两大优点。

二、LINQ的基本用法

2.1 流式语法

流式语法是编写LINQ表达式的最基础同时也是最灵活的方式。它允许我们使用查询运算符链构造更复杂的查询。

首先来介绍几个最常见的查询运算符WhereOrderBySelectWhere会根据输入的条件筛选序列;OrderBy运算符根据输入的序列生成一个排序后的版本;Select将输入序列中的每一个元素按给定的Lambda表达式进行转换或映射。

string[] names = {
   "Tom","John","Mary","LiHua","ZhangSan"};
IEnumerable<string> res = names
	.Where(e => e.Contains("o"))
	.OrderBy(e => e.Length)
	.Select(e=>e.ToUpper());

foreach (var item in res)
{
   
	Console.WriteLine(item);
}
// 输出结果:  
// TOM  
// JOHN

这些查询运算符实际上是在Enumerable类中对IEnumerable<>的扩展方法(以Where为例)。通过接收一个委托来进行元素的筛选。

public static IEnumerable<TSource> Where<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate)

需要注意的是:查询运算符绝不会修改输入序列,相反,它会返回一个新序列。这种设计是符合函数式编程规范的,而LINQ就是起源自函数式编程。

下面再介绍一些其他的查询运算符
Take运算符将输出前x个元素,而丢弃其他元素

// Take运算符  
var res1 = names.Take(3);  
foreach (var item in res1) 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值