首页 > 编程语言 >C#中LINQ的使用知多少?LINQ常功能整理,实例源代码解析

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

时间:2023-11-25 09:03:39浏览次数:36  
标签:Console C# LINQ num WriteLine var query 源代码

 

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

  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,开发人员可以更加方便地进行各种数据操作和查询,提高代码的可读性和开发效率。

 

标签:Console,C#,LINQ,num,WriteLine,var,query,源代码
From: https://www.cnblogs.com/hanbing81868164/p/17855161.html

相关文章

  • BarTender根据EXCEL打印内容
    1.先准备好数据源(EXCEL)2.打开BarTender,新建文档-》点击下一步3.连续点击下一步4.检查BarTender的版本,并设置标签尺寸5.添加字段6.选择字段属性,设置绑定关联表格,关联表格列标题-》下一步点击下一步选择关联的文件7.选择关联的EXCEL工作簿8.关联表格的......
  • ACL(访问控制列表)
    ACL(访问控制列表)1.概述ACL是由一系列permit或deny语句组成的、有序规则的列表ACL是一个匹配工具,能够对报文进行匹配和区分应用于2.组成0.0.0.255通配符掩码匹配原则是从规则编号最小的开始,小的已经拒绝了的话,大的允许也没有用了通配符:0就是严格匹配,1就是随意,只要0匹配上......
  • Educational Codeforces Round 158 (Rated for Div. 2) A-C
    A大致题意:有一条长度为x的直线公路,最开始你位于0号点并且此时你的油箱装满了油,公路有n个加油站,当你经过加油站的时候你可以在加油站加满油,每走一个单位需要花费1升油量,起始位置和终点没有加油站,请问你的油箱容量至少为多少升才可以够你跑一个来回。解题思路:我们的路径大致是......
  • 第4篇SCRUM冲刺
    1.作业概述 这个作业属于哪个课程软件工程这个作业的要求在哪里团队项目这个作业的目标项目冲刺   队员学号:李文浩(3121004788),江楠(3121004652),林育鑫(3121004660),汤陶然(3121004751)(组长),练东晖(3121004738),艾山.依力哈木(3120005145),袁梓为(3121004844) 2.......
  • ElasticSearch之禁用交换分区
    操作系统将进程加载至内存中执行时,对于当前未使用到的内存页,可能会将相关内存页交换至硬盘上,即swap。对于性能敏感、时延敏感的应用程序比如ElasticSearch,swap特性会明显影响性能和稳定性,因此最好禁用swap特性。对于Linux环境,目前有如下手段可以禁用swap特性。临时关闭swap的方......
  • 两巨头Facebook 和 GitHub 联手推出 Atom-IDE
    9月13日,GitHub宣布与Facebook合作推出了Atom-IDE——它包括一系列将类IDE功能带到Atom的可选工具包。初次发布的版本包括更智能、感知上下文的自动完成;导航功能,如大纲视图和定义跳转(outlineviewandgoto-definition),以及其他有用的功能;还包括错误、警告提醒和格式化......
  • 使用Electron+Puppeteer实现万媒易发,一键发布原创文章到各大主流博客平台!
    使用Electron+Puppeteer实现万媒易发,一键发布原创文章到各大主流博客平台引言作为一名热衷于原创文章的程序员,我们常常面临的问题是如何高效地将精彩的内容分享到各大主流博客平台,以扩大影响力。为了解决这一难题,我开发了一款名为“万媒易发”的多平台自动发布文章工具,通过Elect......
  • juc 学习
    CyclicBarrier应用场景是比如在做压力测试时,使用多少个用户并发,做集合点测试。比如设置100个用户并发,100个用户同时进行压测,只有100个用户压测完毕时,才能再发起下一波的压力测试。 packagecom.study.juc;importjava.util.concurrent.BrokenBarrierException;importja......
  • 6-一文解决Windows系统上的R、Rtools、Rstudio的安装,镜像设置和BiocManager等R包的安
     这个教程我做得非常好,不仅安装好了R,Rtools,Rstudio,还设置了镜像,示范安装R包,把许多散乱的教程都统一起来了,R语言初学者值得一看。前面的文章请看:TBtools进行序列提取;基因家族的鉴定blast和hmmer;基于Windows系统的iqtree系统进化树;关于Windows系统上的java安装R与Rstudio的安......
  • 十六、C++字符串(一)
    十六、C++字符串(一)1、原生字符串实现将两个字符串拼接//原生字符串实现将两个字符串拼接#include<iostream>#include<locale>intmain(){charstrA[0x10]="123";//定义字符串charstrB[0x10]="456";setlocale(LC_ALL,"chs");charstrC[0......