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

白骑士的C#教学进阶篇 2.4 LINQ查询

系列目录

上一篇:白骑士的C#教学进阶篇 2.3 委托与事件

        LINQ(Language Integrated Query)是C#中的一个强大特性,它提供了统一的语法来查询和操作各种数据源,如数组、集合、XML和数据库等。LINQ通过一种类似SQL的查询语言,使得数据查询变得更加直观和简洁。在本节中,我们将介绍LINQ的基本语法、查询操作,以及如何在数组、列表和字典等集合中应用LINQ,帮助您掌握这一强大的工具以编写高效的C#代码。

LINQ简介与基本语法

        LINQ允许使用类似SQL的查询语法来操作内存中的对象。LINQ查询分为三个主要部分:数据源、查询创建和查询执行。

基本语法

int[] numbers = { 1, 2, 3, 4, 5 };// LINQ查询语法
var query = from num in numberswhere num % 2 == 0select num;foreach (var num in query)
{Console.WriteLine(num);
}

        在这个示例中,LINQ查询从数组‘numbers‘中选择所有偶数,并打印它们。

方法语法

        除了查询语法外,LINQ还提供了一套方法语法,这些方法作为‘Enumerable‘类的扩展方法。

int[] numbers = { 1, 2, 3, 4, 5 };// LINQ方法语法
var query = numbers.Where(num => num % 2 == 0);foreach (var num in query)
{Console.WriteLine(num);
}

        在这个示例中,使用方法语法实现了与查询语法相同的功能。

LINQ查询操作

        LINQ提供了一组强大的查询操作,用于过滤、排序、分组和转换数据。

过滤操作

        ‘Where‘方法用于过滤集合中的元素。

string[] names = { "Alice", "Bob", "Charlie", "David" };var query = names.Where(name => name.Length > 3);foreach (var name in query)
{Console.WriteLine(name);
}

        在这个示例中,‘Where‘方法过滤出所有长度大于3的名字。

排序操作

        ‘OrderBy‘和‘OrderByDescending‘方法用于对集合进行排序。

int[] numbers = { 5, 1, 3, 2, 4 };var query = numbers.OrderBy(num => num);foreach (var num in query)
{Console.WriteLine(num);
}

        在这个示例中,‘OrderBy‘方法对数组进行升序排序。

分组操作

        ‘GroupBy‘方法用于对集合进行分组。

string[] names = { "Alice", "Bob", "Charlie", "David", "Albert" };var query = names.GroupBy(name => name[0]);foreach (var group in query)
{Console.WriteLine("Names starting with " + group.Key + ":");foreach (var name in group){Console.WriteLine(name);}
}

        在这个示例中,‘GroupBy‘方法将名字按首字母进行分组。

转换操作

        ‘Select‘方法用于将集合中的每个元素转换为新的形式。

int[] numbers = { 1, 2, 3, 4, 5 };var query = numbers.Select(num => num * num);foreach (var num in query)
{Console.WriteLine(num);
}

        在这个示例中,‘Select‘方法将数组中的每个元素平方。

LINQ与集合操作

        LINQ可以方便地与各种集合类型一起使用,包括数组、列表和字典等。

与数组操作

int[] numbers = { 1, 2, 3, 4, 5 };var query = from num in numberswhere num > 2select num;foreach (var num in query)
{Console.WriteLine(num);
}

        在这个示例中,LINQ查询从数组‘numbers‘中选择所有大于2的元素。

与列表操作

using System;
using System.Collections.Generic;
using System.Linq;public class Program
{public static void Main(string[] args){List<string> names = new List<string> { "Alice", "Bob", "Charlie", "David" };var query = from name in nameswhere name.Contains("a")select name;foreach (var name in query){Console.WriteLine(name);}}
}

        在这个示例中,LINQ查询从列表‘names‘中选择所有包含字母"a"的名字。

与字典操作

using System;
using System.Collections.Generic;
using System.Linq;public class Program
{public static void Main(string[] args){Dictionary<string, int> ages = new Dictionary<string, int>{{ "Alice", 30 },{ "Bob", 25 },{ "Charlie", 35 },{ "David", 40 }};var query = from kvp in ageswhere kvp.Value > 30select kvp;foreach (var kvp in query){Console.WriteLine(kvp.Key + " is " + kvp.Value + " years old.");}}
}

        在这个示例中,LINQ查询从字典‘ages‘中选择所有年龄大于30的键值对。

总结

        通过学习LINQ的基本语法和查询操作,您可以显著提高对各种数据源的处理效率。LINQ提供了一种统一、简洁且功能强大的方式来操作数组、列表和字典等集合,使得代码更加易读和维护。在掌握这些LINQ操作后,您可以轻松实现复杂的数据查询和处理任务。在接下来的章节中,我们将继续探索C#的高级特性和编程技巧,以进一步提升您的开发能力。

下一篇:白骑士的C#教学进阶篇 2.5 异步编程​​​​​​​

http://www.lryc.cn/news/427730.html

相关文章:

  • 2024华为OD机试真题- 贪吃的猴子Python-C卷D卷-200分
  • 4-1-2 直流电机(电机专项教程)
  • [图解]用例规约之扩展路径
  • 学习记录第二十八天
  • SpringBoot的事务/调度/缓存/邮件发送和一些Spring知识点总结
  • 透明加密技术
  • 深入理解Faiss:高效向量检索的利器
  • RK3576 芯片介绍
  • Python模块篇(五)
  • 西安旅游系统--论文pf
  • 分享一个思路,使用插桩技术解决慢查询测试问题
  • 【STM32项目】在FreeRtos背景下的实战项目的实现过程(二)
  • javaer快速入门 goweb框架 gin
  • SQL - 数据类型
  • 进程相关知识
  • 萝卜快跑和端到端的自动驾驶(1)
  • 通信原理学习笔记
  • 系统编程---day4
  • 01:电容的什么,各类电容的优缺点
  • Android+Jacoco+code-diff全量、增量覆盖率生成实战
  • 乌龟对对碰在线版
  • 如何更改select option边框颜色和选中的颜色
  • 6. 数据结构—串的匹配算法
  • 九大服务架构性能优化方式
  • 【RabbitMQ】 相关概念 + 工作模式
  • 嵌入式学习 ——(Linux高级编程——进程)
  • C++练习备忘录
  • 改善工作流
  • 迭代器失效
  • @RequestParam @RequestBody @PathVariable 这三个注解对应的前端使用vue的http请求时不同的调用方式