首页 > 其他分享 >LINQ常功能整理

LINQ常功能整理

时间:2024-04-22 13:56:20浏览次数:21  
标签:功能 Console LINQ var num WriteLine 整理 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,开发人员可以更加方便地进行各种数据操作和查询,提高代码的可读性和开发效率。

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,LINQ,var,num,WriteLine,整理,query
From: https://www.cnblogs.com/cdaniu/p/18150500

相关文章

  • 微信小程序功能-----基础轮播图配置
    使用swiper设置轮播图,下面是实现效果图页面结构<swiperclass="content-info-slide"indicator-color="rgba(255,255,255,.5)"indicator-active-color="#fff"indicator-dotscircularautoplay><swiper-item><imagesrc="/page......
  • 【转载】异步 LINQ
    原文:https://blog.csdn.net/zls365365/article/details/124395742LINQ这个东西,出来很早了,写过几年代码的兄弟们,或多或少都用过一些。早期的LINQ,主要是同步的,直到C#8.0加入IAsyncEnumerable,LINQ才真正转向异步。这本来是个非常好的改变,配合System.Linq.Async库提供的扩......
  • 如何基于Django中的WebSockets和异步视图来实现实时通信功能
    本文分享自华为云社区《结合Django中的WebSockets和异步视图实现实时通信功能的完整指南》,作者:柠檬味拥抱。在现代Web应用程序中,实时通信已经成为了必不可少的功能之一。无论是在线聊天、实时数据更新还是实时通知,都需要通过实时通信技术来实现。Django作为一个强大的Web框架,提......
  • PowerBI_一分钟了解POWERBI计算组功能及作用(第一部分)
    1:X-mind&计算组(CALCULATIONGROUP)介绍1.1什么是计算组PowerBI的计算组功能可以显著减少必须创建的冗余度量值数,通过允许将DAX表达式定义为应用于模型中现有度量值的计算项.这个功能最常用作辅助指标批量生成,比如有10个基础指标,需要针对各指标排名,传统模式下你需要写10个......
  • 视野修炼-技术周刊第81期 | Chrome 124 新功能
    欢迎来到第81期的【视野修炼-技术周刊】,下面是本期的精选内容简介......
  • sql server 的一些功能
    1 添加 applicationname  结果 2 /******SSMS的SelectTopNRows命令的脚本******/setstatisticstimeonsetstatisticsioonSELECTTOP(1000)[ID],[CreateTime],[ProductID],[Count]FROM[Order].[dbo].[Orders]  ......
  • 82.8K Star 功能强大的语言处理的PYTHON库
    简介LangChain是一个框架,用于开发由大型语言模型(LLMs)提供支持的应用程序。langchain库是功能强大的语言处理工具,可以用于文本处理、语言分析等多种任务。本文将介绍该库的安装、特性、基本功能、高级功能、实际应用场景,并进行总结。特性多语言支持:支持多种语言的处理和分......
  • ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1)
    ASP.NETMVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1) 本系列的的角色权限管理主要采用Dotnet MVC4工程内置的权限管理模块Simplemembership实现,主要有关文件是InitializeSimpleMembershipAttribute.cs和AccountModels.cs下面是对这两个文件的了解和改造 WebSe......
  • ASP.NET MVC4.0+EF+LINQ+bui+网站+角色权限管理系统(6)
    ASP.NETMVC4.0+EF+LINQ+bui+网站+角色权限管理系统(6) 快过年了,公司事情忙,好几天没有继续写博客,今天开始写账户模块系统登录,账户管理以及登录日志,首先新建登录日志数据表: ViewCode然后更改模型:AccountModels.cs ViewCode创建登录日志模型:M_UsersLoginLogs.cs View......
  • HarmonyOS NEXT应用开发—在Native侧实现进度通知功能
    介绍本示例通过模拟下载场景介绍如何将Native的进度信息实时同步到ArkTS侧。效果图预览使用说明点击“StartDownload“按钮后,Native侧启动子线程模拟下载任务Native侧启动子线程模拟下载,并通过Arkts的回调函数将进度信息实时传递到Arkts侧实现思路前端进度条使用Progr......