当前位置: 首页 > news >正文

通过示例解释 C# 中强大的 LINQ的集运算

Language Integrated Query (LINQ) 是 C# 中一个强大的特性,用于查询和操作数据集合。LINQ 提供了一种简洁、类型安全和可读性高的方式来处理数据集合。本文将通过多个示例详细解释 LINQ 的集合运算,包括筛选、排序、分组、投影和连接。

一、LINQ 基础

LINQ 查询通常由以下部分组成:

  1. 数据源:要查询的集合。
  2. 查询:定义如何从数据源中提取信息。
  3. 执行:对查询进行遍历以检索数据。

示例数据源:

List<int> numbers = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

二、筛选(Filtering)

筛选操作用于从数据源中选择符合条件的元素。

示例:选择所有偶数

var evenNumbers = from number in numberswhere number % 2 == 0select number;foreach (var num in evenNumbers)
{Console.WriteLine(num);
}

三、排序(Sorting)

排序操作用于对数据源中的元素进行排序。

示例:按升序排序

var ascendingNumbers = from number in numbersorderby numberselect number;foreach (var num in ascendingNumbers)
{Console.WriteLine(num);
}

示例:按降序排序

var descendingNumbers = from number in numbersorderby number descendingselect number;foreach (var num in descendingNumbers)
{Console.WriteLine(num);
}
​

四、分组(Grouping)

分组操作用于将数据源中的元素按指定的键进行分组。

示例:按奇偶分组

var groupedNumbers = from number in numbersgroup number by number % 2 into numberGroupselect numberGroup;foreach (var group in groupedNumbers)
{Console.WriteLine(group.Key == 0 ? "Even numbers:" : "Odd numbers:");foreach (var num in group){Console.WriteLine(num);}
}
​

五、投影(Projection)

投影操作用于从数据源中选择特定的元素或计算结果。

示例:选择数字的平方

var squaredNumbers = from number in numbersselect number * number;foreach (var num in squaredNumbers)
{Console.WriteLine(num);
}
​

六、连接(Joining)

连接操作用于将两个数据源的相关元素组合在一起。

示例:内连接

List<string> categories = new List<string> { "A", "B", "C" };
List<Product> products = new List<Product>
{new Product { Name = "Apple", Category = "A" },new Product { Name = "Banana", Category = "B" },new Product { Name = "Carrot", Category = "C" },new Product { Name = "Date", Category = "D" }
};var innerJoin = from category in categoriesjoin product in products on category equals product.Categoryselect new { Category = category, Product = product.Name };foreach (var item in innerJoin)
{Console.WriteLine($"Category: {item.Category}, Product: {item.Product}");
}
​

七、综合示例

结合多个 LINQ 操作进行综合示例。

示例:筛选、排序、分组和投影

var result = from number in numberswhere number % 2 == 0orderby number descendinggroup number by number % 4 into numberGroupselect new{Remainder = numberGroup.Key,Numbers = numberGroup};foreach (var group in result)
{Console.WriteLine($"Numbers with remainder {group.Remainder} when divided by 4:");foreach (var num in group.Numbers){Console.WriteLine(num);}
}

文章转载自:

http://0zbg3Dz3.dbhnx.cn
http://IhXyZXyJ.dbhnx.cn
http://dGCoHplZ.dbhnx.cn
http://9wiiSAld.dbhnx.cn
http://WvZA6J4d.dbhnx.cn
http://xtOnxtDc.dbhnx.cn
http://LlGRtxm0.dbhnx.cn
http://ModBWy9m.dbhnx.cn
http://SMjXOzl9.dbhnx.cn
http://F7mA0oJX.dbhnx.cn
http://R9BGQGbW.dbhnx.cn
http://xzRidxwo.dbhnx.cn
http://E9bJrDZ9.dbhnx.cn
http://8j8e7vSd.dbhnx.cn
http://xB2DzVRu.dbhnx.cn
http://2avq0M4T.dbhnx.cn
http://JuisUQfn.dbhnx.cn
http://cNK35aWk.dbhnx.cn
http://nNEG1Mfm.dbhnx.cn
http://UL2vKv3s.dbhnx.cn
http://dBCf9g3P.dbhnx.cn
http://8uhNF922.dbhnx.cn
http://4EIGMFmy.dbhnx.cn
http://esxIGAOe.dbhnx.cn
http://zp17lWq3.dbhnx.cn
http://oEZ27kM4.dbhnx.cn
http://7FwHQuCI.dbhnx.cn
http://E99tlvAP.dbhnx.cn
http://rpf0d854.dbhnx.cn
http://FG83ARpL.dbhnx.cn
http://www.dtcms.com/a/247437.html

相关文章:

  • 力扣面试150题--实现Trie(前缀树)
  • c#和c++区别
  • uni-app项目实战笔记4--使用组件具名插槽slot定义公共标题模块
  • 偷懒一下下
  • Logic Error: 如何识别和修复逻辑错误
  • [MSPM0开发]之七 MSPM0G3507 UART串口收发、printf重定向,解析自定义协议等
  • day54 python对抗生成网络
  • 【Linux仓库】进程状态【进程·叁】
  • 数据结构——第二章 线性表之顺序表、单链表
  • navicat可视化页面直接修改数据库密码——mysql、postgresql、mangodb等
  • 华为云Flexus+DeepSeek征文 | 当大模型遇见边缘计算:Flexus赋能低延迟AI Agent
  • 2.3 ASPICE的架构与设计
  • 松胜与奥佳华按摩椅:普惠科技与医疗级体验的碰撞
  • 【Vue PDF】Vue PDF 组件初始不加载 pdfUrl 问题分析与修复
  • Mac电脑 系统监测工具 System Dashboard Pro
  • 在mac上安装sh脚本文件
  • Unity编辑器-获取Projectwindow中拖拽内容的路径
  • 科技新底座揭幕!2025 MWC上海锚定AI+、5G融合、双区创新三大引擎
  • 人工智能时代汽车营销如何创新突破?云徙科技汽车营销智能体助力车企立足数智化转型
  • 从流量到变现:知识IP商业化的底层逻辑|创客匠人解析
  • Nginx 负载均衡、高可用及动静分离
  • RabbitMQ配置镜像
  • 监控视频云解决方案详解
  • vue3 双容器自动扩展布局 根据 内容的多少 动态定义宽度
  • matlab实现非线性Granger因果检验
  • windows使用命令行查看进程信息
  • 【Spring AI】MCP Server实现多实例部署
  • Flutter:步骤条组件
  • Flutter项目编译到鸿蒙模拟器报错
  • Flutter Android打包和发布Build APK