Linq的概念解析
在http://www.cnblogs.com/2018/category/262512.html 这些文章中提到
WCF Data Service和WCF RIA Service的使用,在实际的使用过程中会经常的使用linq,为此把这些概念解析一下。
序列
IEnumerable<T> ,这个类型是关键,LINQ的标准查询操作符都需要使用该类型对象作为参数
查询操作符
是指在LINQ查询上下文事业能够的、一系列扩展方法的集合,是实现linq的最重要的一类元素
预定义的标准查询操作符:
过滤 |
OfType, Where |
投影 |
Select, SelectMany |
分区 |
Skip, SkipWhile, Take, TakeWhile |
连接 |
GroupJoin, Join |
串联 |
Concat |
排序 |
OrderBy, OrderByDescending, Reverse, ThenBy, ThenByDescending |
分组 |
GroupBy, ToLookup |
集合 |
Distinct, Except, Intersect, Union |
转换 |
AsEnumerable, AsQueryable, Cast, ToArray, ToDictionary, ToList |
等同 |
SequenceEqual |
元素 |
ElementAt, ElementAtOrDefault, First, FirstOrDefault, Last, |
生成 |
LastOrDefault, Single, SingleOrDefault |
数量 |
DefaultIfEmpty, Empty, Range, Repeat |
聚集 |
All, Any, Contains |
查询表达式
查询表达式提供了一种继承于语言中的、用于编写查询语句的语法。编译器自动将其转换为对标准查询操作符的调用。
查询本操作符和查询表达是对应关系
查询操作符 |
查询表达式(C#) |
All |
无 |
Any |
无 |
Average |
无 |
Cast |
使用显式类型的范围变量,如 from int i in numbers |
Count |
无 |
Distinct |
无 |
GroupBy |
group … by |
GroupJoin |
join … in … on … |
Join |
join … in … on … |
LongCount |
无 |
Max |
无 |
Min |
无 |
OrderBy |
orderby |
OrderByDescending |
orderby … descending |
Select |
select |
SelectMany |
多个Frrom子句 |
Skip |
无 |
SkipWhile |
无 |
Sum |
无 |
Take |
无 |
TakeWhile |
无 |
ThenBy |
orderby …, … |
ThenByDescending |
orderby …, …descending |
Where |
where |
两种写法相同效果的例子
查询操作符 |
查询表达式 |
SampleData.Books .Where(book => book.Title == "Funny Stories") .OrderBy(book => book.Title) .Select(book => new {book.Title, book.Price}); |
from book in SampleData.Books where book.Title == "Funny Stories" orderby book.Title select new {book.Title, book.Price}; |
根据情况和语言中的对应限定关系选择使用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南