[C#] Linq常用语法

2024-05-26 07:08
文章标签 c# 语法 常用 .net netcore linq

本文主要是介绍[C#] Linq常用语法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

<strong>Linq常用语法</strong>

 Student[] student = {            new Student{ID=1, Name="小黑",Age=3,Class=1},new Student{ID=2,Name="小布",Age=5,Class=1},new Student{ID=3,Name="朱迪",Age=20,Class=2},new Student{ID=4,Name="狐尼克",Age=21,Class=2}};
StudentClass[] studentClass = { new StudentClass{ID=1, Name="一班"},new StudentClass{ID=2, Name="二班"}};

1 简单的linq语法

 //1 简单的linq语法var s11 = from r in studentselect r;var s12 = student;//"select * from student";

2.linq where 查询

  var s21 = from r in studentwhere r.ID > 2select r;var s22 = student.Where(p => p.ID > 2);//"select * from student where ID>2";

3.linq 简单的函数计算(count,min,max,sum)

           //获取最大的IDvar s311 = (from r in studentselect r).Max(p => p.ID);//获取最小的IDvar s312 = (from r in studentselect r).Min(p => p.ID);//获取结果集的总数var s313 = (from r in studentselect r).Count();//获取ID的和var s314 = (from r in studentselect r).Sum(p => p.ID);var s321 = student.Max(p => p.ID);var s322 = student.Min(p => p.ID);var s323 = student.Count();var s324 = student.Sum(p => p.ID);// "select max(ID) from student";// "select min(ID) from studente";// "select count(1) from student";// "select sum(ID) from student";

4.linq 排序order by desc/asc

            var s41 = from r in studentwhere r.ID > 1orderby r.ID descending  //倒序//orderby r.ID ascending   //正序select r;//正序var s42 = student.OrderBy(p => p.ID).Where(p => p.ID > 1).ToList();//倒序var s43 = student.OrderByDescending(p => p.ID).Where(p => p.ID > 1).ToList();// "select * from student where ID>1 order by ID [desc|asc]";

5.linq top

 //如果取最后一个可以按倒叙排列再取值var s51 = (from r in student                     select r).FirstOrDefault();//()linq to ef 好像不支持 Last() var s52 = student.FirstOrDefault();var s53 = student.First();// "select top(1) * from student";

6.linq 跳过前面多少条数据取余下的数据

var s61 = (from r in studentorderby r.ID descendingselect r).Skip(10); //跳过前10条数据,取10条之后的所有数据   var s62 = student.OrderByDescending(p => p.ID).Skip(10).ToList();
// "select * from  (select ROW_NUMBER()over(order by ID desc) as rowNum, * from [student]) as t where rowNum>10";

7.linq 分页数据查询

 var s71 = (from r in studentwhere r.ID > 10orderby r.ID descendingselect r).Skip(10).Take(10); //取第11条到第20条数据                   //Take(10): 数据从开始获取,获取指定数量(10)的连续数据var s72 = student.OrderByDescending(p => p.ID).Where(p => p.ID > 10).Skip(10).Take(10).ToList();//"select * from  (select ROW_NUMBER()over(order by ID desc) as rowNum, * from [student]) as t // where rowNum>10 and rowNum<=20";

8.linq 包含,类似like '%%'

 var s81 = from r in studentwhere r.Name.Contains("小")select r;var s82 = student.Where(p => p.Name.Contains("小")).ToList();// "select * from student where Name like '%小%'";

9.linq 分组group by

 var s91 = from r in studentorderby r.ID descendinggroup r by r.Class into nselect new{n.Key,  //这个Key是recTyperpId = n.Sum(r => r.ID), //组内rpId之和MaxRpId = n.Max(r => r.ID),//组内最大rpIdMinRpId = n.Min(r => r.ID), //组内最小rpId};foreach (var t in s91){Console.Write(t.Key + "--" + t.rpId + "--" + t.MaxRpId + "--" + t.MinRpId);}//2var s92 = from r in studentorderby r.ID descendinggroup r by r.Class into nselect n;foreach (var t in s92){Console.Write(t.Key + "--" + t.Min(p => p.ID));}//3var s93 = student.GroupBy(p => p.Class);foreach (var t in s93){Console.Write(t.Key + "--" + t.Min(p => p.ID));}//"select Class,min(ID),max(ID),sum(ID) from student group by Class";

10.linq 连接查询 

  //1var s101 = from r in studentjoin w in studentClass on r.Class equals w.IDorderby r.ID descendingselect r;//2
var s102 = student.Join(studentClass, p => p.Class, r => r.ID, (p, r) => p).OrderByDescending(p => p.ID).ToList();//3// "select r.* from  student as r //               inner join [dbo].[studentClass] as t //                           on r.[Class] = t.[ID] //order by r.[ID] desc";

11.linq 中的In

  var s111 = from p in studentwhere (new int?[] { 2,3,4 }).Contains(p.ID)select p;foreach (var p in s111){Console.Write(p.Name);}//2//"select * from student where ID in(2,3,4)";


参考原文:http://www.cnblogs.com/knowledgesea/p/3897665.html
 

这篇关于[C#] Linq常用语法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003777

相关文章

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

C#比较两个List集合内容是否相同的几种方法

《C#比较两个List集合内容是否相同的几种方法》本文详细介绍了在C#中比较两个List集合内容是否相同的方法,包括非自定义类和自定义类的元素比较,对于非自定义类,可以使用SequenceEqual、... 目录 一、非自定义类的元素比较1. 使用 SequenceEqual 方法(顺序和内容都相等)2.

Python中操作Redis的常用方法小结

《Python中操作Redis的常用方法小结》这篇文章主要为大家详细介绍了Python中操作Redis的常用方法,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解一下... 目录安装Redis开启、关闭Redisredis数据结构redis-cli操作安装redis-py数据库连接和释放增

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

C#从XmlDocument提取完整字符串的方法

《C#从XmlDocument提取完整字符串的方法》文章介绍了两种生成格式化XML字符串的方法,方法一使用`XmlDocument`的`OuterXml`属性,但输出的XML字符串不带格式,可读性差,... 方法1:通过XMLDocument的OuterXml属性,见XmlDocument类该方法获得的xm

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

C#提取PDF表单数据的实现流程

《C#提取PDF表单数据的实现流程》PDF表单是一种常见的数据收集工具,广泛应用于调查问卷、业务合同等场景,凭借出色的跨平台兼容性和标准化特点,PDF表单在各行各业中得到了广泛应用,本文将探讨如何使用... 目录引言使用工具C# 提取多个PDF表单域的数据C# 提取特定PDF表单域的数据引言PDF表单是一

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过

Java中Object类的常用方法小结

《Java中Object类的常用方法小结》JavaObject类是所有类的父类,位于java.lang包中,本文为大家整理了一些Object类的常用方法,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. public boolean equals(Object obj)2. public int ha