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

C# LINQ 基础与应用

前言

Language Integrated Query 中文名称为语言集成查询,其简称 LINQ,是将查询功能集成到编程语言中的技术。通过LINQ,我们可以用SQL查询数据的方式来从数据源检索数据,如集合、XML、数组、数据库等。LINQ使得编写代码更简洁与直观,提高了代码的可读性和可维护。

基础

LINQ查询由获取数据源、创建查询、执行查询三个不同操作组成,对应的每个组成部分都有相应的语法或者要求。from 子句指定数据源,**where 子句应用筛选器,**select 子句指定返回的元素的类型。

数据源

数据源通常都是支持 IEnumerable或派生接口(如 IQueryable)的类型,这些类型称为可查询类型。对于非可查询类型,LINQ提供了一些对应的程序。如LINQ to XML、LINQ to Object、LINQ to Entities等。

// 数据源--整型数组
int[] numbers = new int[] {20,50,100,15,85,10,30,70};
// 创建查询 numberQueryInfo是一个IEnumerable<int>
var numberQueryInfo = from number in numbers select number;

使用LINQ to XML

string xmlPath =string.Format("{0}{1}", AppDomain.CurrentDomain.BaseDirectory, "version.xml");
// 数据源--XML文档
XElement contacts = XElement.Load(xmlPath);
查询

查询指定从数据源中检索的信息,对查询返回信息进行排序、分组、结构化后存储在查询变量中。C#可以使用查询语法或方法语法来编写查询。

1、查询语法
1.1 基本查询操作

通过from指定数据源,使用where进行过滤筛选,以select 子句指定返回的元素的类型。

using System;
using System.Collections.Generic;
using System.Linq;namespace Fountain.WinConsole.LinqDemo
{internal class Program{static void Main(string[] args){PaymentMethod payment1 = new PaymentMethod(){MethodId = 1,MethodName = "现金"};PaymentMethod payment2 = new PaymentMethod(){MethodId = 2,MethodName = "网银"};PaymentMethod payment3 = new PaymentMethod(){MethodId = 3,MethodName = "支付宝"};PaymentMethod payment4 = new PaymentMethod(){MethodId = 4,MethodName = "微信"};List<PaymentMethod> payments = new List<PaymentMethod>(){ payment1,payment2,payment3, payment4 };// 查询所有付款方式大于2方式var paymentQuery = from nPayment in payments where nPayment.MethodId > 2orderby nPayment.MethodId descendingselect nPayment;}}
}
1.2 查询结果排序

使用orderby对查询结果进行排序,用ascending表示升序,descending表示降序。

using System;
using System.Collections.Generic;
using System.Linq;namespace Fountain.WinConsole.LinqDemo
{internal class Program{static void Main(string[] args){PaymentMethod payment1 = new PaymentMethod(){MethodId = 1,MethodName = "现金"};PaymentMethod payment2 = new PaymentMethod(){MethodId = 2,MethodName = "网银"};PaymentMethod payment3 = new PaymentMethod(){MethodId = 3,MethodName = "支付宝"};PaymentMethod payment4 = new PaymentMethod(){MethodId = 4,MethodName = "微信"};List<PaymentMethod> payments = new List<PaymentMethod>(){ payment1,payment2,payment3, payment4 };// 查询所有付款方式大于2方式var paymentQuery = from nPayment in payments where nPayment.MethodId > 2orderby nPayment.MethodId descendingselect nPayment;// 输出结果foreach (PaymentMethod paymentItem in paymentQuery) { Console.WriteLine(string.Format("方式{0}-名称:{1}",paymentItem.MethodId,paymentItem.MethodName)); }}}
}   
1.3 查询结果分组

使用group对查询结果进行分组,以by来指定分组的条件。

using System;
using System.Collections.Generic;
using System.Linq;namespace Fountain.WinConsole.LinqDem

http://www.mrgr.cn/news/58704.html

相关文章:

  • 量子纠错--shor‘s 码
  • 论文笔记(五十)Segmentation-driven 6D Object Pose Estimation
  • 管理类联考 信息整理和经验分享
  • 论文阅读(二十六):Dual Attention Network for Scene Segmentation
  • 15.正则化——防止过拟合的有效手段
  • CZX前端秘籍1
  • 判断特定时间点开仓的函数(编程技巧)
  • 如何提高游戏的游戏性
  • Flutter之build 方法详解
  • 创建插件 DLL 项目
  • Idea基于JRbel实现项目热部署修改Java、Xml文件无需重启项目
  • 【南方科技大学】CS315 Computer Security 【Lab6 IoT Security and Wireless Exploitation】
  • 文件下载漏洞
  • 东方博宜1180 - 数字出现次数
  • SPI通信(W25Q64)
  • nginx常规操作
  • MySQL8 配置密码和用户创建及授权详解:Java开发最佳实践
  • 【前端倒霉蛋--word导出】
  • 社交改运很简单:谋定而后动,三种人群的智慧策略,生成无敌贵人圈
  • 出差日记,记录人生百态
  • 01_Linux基础操作CentOS7学习笔记
  • k8s 1.28.2 集群部署 NFS server 和 NFS Subdir External Provisioner
  • 如何在 .NET中使用Flurl高效处理Http请求
  • 2-133 基于matlab的粒子群算法PSO优化BP神经网络
  • hackme靶机渗透流程
  • 基础巩固: