当前位置:首页 > 科技  > 软件

C#中LINQ的使用知多少?LINQ常功能整理,源代码解析

来源: 责编: 时间:2023-12-21 17:11:44 347观看
导读LINQ(Language-Integrated Query)是C#语言中的一个强大的查询技术,它提供了一种统一的查询语法,可以用于查询和操作各种数据源,包括集合、数据库、XML等。下面详细描述了LINQ的20个功能点,并提供了相应的源代码。查询集合中

OZ728资讯网——每日最新资讯28at.com

LINQ(Language-Integrated Query)是C#语言中的一个强大的查询技术,它提供了一种统一的查询语法,可以用于查询和操作各种数据源,包括集合、数据库、XML等。下面详细描述了LINQ的20个功能点,并提供了相应的源代码。OZ728资讯网——每日最新资讯28at.com

  1. 查询集合中的所有元素:
int[] numbers = { 1, 2, 3, 4, 5 };var query = from num in numbers            select num;foreach (var num in query){    Console.WriteLine(num);}
  1. 使用条件过滤集合中的元素:
int[] numbers = { 1, 2, 3, 4, 5 };var query = from num in numbers            where num % 2 == 0            select num;foreach (var num in query){    Console.WriteLine(num);}
  1. 对集合中的元素进行排序:
int[] numbers = { 5, 3, 1, 4, 2 };var query = from num in numbers            orderby num            select num;foreach (var num in query){    Console.WriteLine(num);}
  1. 对集合中的元素进行分组:
string[] names = { "Alice", "Bob", "Charlie", "David", "Eve" };var query = from name in names            group name by name[0];foreach (var group in query){    Console.WriteLine(group.Key);    foreach (var name in group)    {        Console.WriteLine(name);    }}
  1. 对集合中的元素进行投影:
string[] names = { "Alice", "Bob", "Charlie", "David", "Eve" };var query = from name in names            select name.Length;foreach (var length in query){    Console.WriteLine(length);}
  1. 连接两个集合的元素:
string[] names1 = { "Alice", "Bob", "Charlie" };string[] names2 = { "David", "Eve", "Frank" };var query = from name1 in names1            join name2 in names2 on name1[0] equals name2[0]            select new { Name1 = name1, Name2 = name2 };foreach (var pair in query){    Console.WriteLine($"{pair.Name1}, {pair.Name2}");}
  1. 使用LINQ查询数据库:
using (var dbContext = new MyDbContext()){    var query = from user in dbContext.Users                where user.Age > 18                select user;    foreach (var user in query)    {        Console.WriteLine(user.Name);    }}
  1. 使用LINQ查询XML文档:
XDocument doc = XDocument.Load("data.xml");var query = from element in doc.Descendants("book")            where (int)element.Element("price") > 10            select element.Element("title").Value;foreach (var title in query){    Console.WriteLine(title);}
  1. 使用LINQ查询JSON数据:
string json = File.ReadAllText("data.json");var data = JsonConvert.DeserializeObject<List<Person>>(json);var query = from person in data            where person.Age > 18            select person.Name;foreach (var name in query){    Console.WriteLine(name);}
  1. 使用LINQ查询并转换结果:
int[] numbers = { 1, 2, 3, 4, 5 };var query = from num in numbers            where num % 2 == 0            select num * 2;foreach (var num in query){    Console.WriteLine(num);}
  1. 使用LINQ查询返回匿名类型:
string[] names = { "Alice", "Bob", "Charlie", "David", "Eve" };var query = from name in names            select new { Name = name, Length = name.Length };foreach (var item in query){    Console.WriteLine($"{item.Name}, {item.Length}");}
  1. 使用LINQ查询返回自定义类型:
public class Person{    public string Name { get; set; }    public int Age { get; set; }}List<Person> people = new List<Person>{    new Person { Name = "Alice", Age = 20 },    new Person { Name = "Bob", Age = 25 },    new Person { Name = "Charlie", Age = 30 }};var query = from person in people            where person.Age > 25            select person.Name;foreach (var name in query){    Console.WriteLine(name);}
  1. 使用LINQ查询返回集合:
int[] numbers = { 1, 2, 3, 4, 5 };var query = from num in numbers            where num % 2 == 0            select num * 2;List<int> result = query.ToList();foreach (var num in result){    Console.WriteLine(num);}
  1. 使用LINQ进行分页查询:
int pageNumber = 2;int pageSize = 10;var query = from product in dbContext.Products            orderby product.Name            select product;var page = query.Skip((pageNumber - 1) * pageSize).Take(pageSize);foreach (var product in page){    Console.WriteLine(product.Name);}
  1. 使用LINQ进行聚合操作:
int[] numbers = { 1, 2, 3, 4, 5 };int sum = numbers.Sum();int max = numbers.Max();int min = numbers.Min();double average = numbers.Average();Console.WriteLine($"Sum: {sum}");Console.WriteLine($"Max: {max}");Console.WriteLine($"Min: {min}");Console.WriteLine($"Average: {average}");
  1. 使用LINQ进行集合的交集操作:
int[] numbers1 = { 1, 2, 3, 4, 5 };int[] numbers2 = { 4, 5, 6, 7, 8 };var query = numbers1.Intersect(numbers2);foreach (var num in query){    Console.WriteLine(num);}
  1. 使用LINQ进行集合的并集操作:
int[] numbers1 = { 1, 2, 3, 4, 5 };int[] numbers2 = { 4, 5, 6, 7, 8 };var query = numbers1.Union(numbers2);foreach (var num in query){    Console.WriteLine(num);}
  1. 使用LINQ进行集合的差集操作:
int[] numbers1 = { 1, 2, 3, 4, 5 };int[] numbers2 = { 4, 5, 6, 7, 8 };var query = numbers1.Except(numbers2);foreach (var num in query){    Console.WriteLine(num);}
  1. 使用LINQ进行集合的连接操作:
var query = from order in dbContext.Orders            join customer in dbContext.Customers on order.CustomerId equals customer.Id            select new { OrderId = order.Id, CustomerName = customer.Name };foreach (var result in query){    Console.WriteLine($"{result.OrderId}, {result.CustomerName}");}
  1. 使用LINQ进行集合的逆序操作:
int[] numbers = { 1, 2, 3, 4, 5 };var query = numbers.Reverse();foreach (var num in query){    Console.WriteLine(num);}

以上是20个常用的LINQ功能点的示例代码,它们展示了LINQ在C#中的强大查询能力和灵活性。通过使用LINQ,开发人员可以更加方便地进行各种数据操作和查询,提高代码的可读性和开发效率。OZ728资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-51252-0.htmlC#中LINQ的使用知多少?LINQ常功能整理,源代码解析

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 五种注册中心,如何选型?

下一篇: FileProvider共享文件和访问文件的内容提供者

标签:
  • 热门焦点
  • 6月iOS设备好评榜:第一蝉联榜首近一年

    作为安兔兔各种榜单里变化最小的那个,2023年6月的iOS好评榜和上个月相比没有任何排名上的变化,仅仅是部分设备好评率的下降,长年累月的用户评价和逐渐退出市场的老款机器让这
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • 在线图片编辑器,支持PSD解析、AI抠图等

    自从我上次分享一个人开发仿造稿定设计的图片编辑器到现在,不知不觉已过去一年时间了,期间我经历了裁员失业、面试找工作碰壁,寒冬下一直没有很好地履行计划.....这些就放在日
  • .NET 程序的 GDI 句柄泄露的再反思

    一、背景1. 讲故事上个月我写过一篇 如何洞察 C# 程序的 GDI 句柄泄露 文章,当时用的是 GDIView + WinDbg 把问题搞定,前者用来定位泄露资源,后者用来定位泄露代码,后面有朋友反
  • 本地生活这块肥肉,拼多多也想吃一口

    出品/壹览商业 作者/李彦编辑/木鱼拼多多也看上本地生活这块蛋糕了。近期,拼多多在App首页&ldquo;充值中心&rdquo;入口上线了本机生活界面。壹览商业发现,该界面目前主要
  • iQOO Neo8 Pro真机谍照曝光:天玑9200+和V1+旗舰双芯加持

    去年10月,iQOO推出了iQOO Neo7系列机型,不仅搭载了天玑9000+,而且是同价位唯一一款天玑9000+直屏旗舰,一经上市便受到了用户的广泛关注。在时隔半年后,
  • 联想的ThinkBook Plus下一版曝光,键盘旁边塞个平板

    ThinkBook Plus 是联想的一个特殊笔记本类别,它在封面放入了一块墨水屏,也给人留下了较为深刻的印象。据有人爆料,联想的下一款 ThinkBook Plus 可能更特殊,它
Top