Linq learning

C#基础(learning hard 学习笔记) -------------------------------------------------------------华丽分割线----------------------------------------------------------------常用关键字as:类型转换;    base:从派生类中访问基类的成员;用于从派生类中访问基类的成员,调用基类上已被其他方法重写的方法。指定创... 阅读详情

介绍C# 中 Linq 的应用。

  1. Introduction:
    LINQ: .NET Language Integrated Query.

    尝试一个问题:有两个数组
    int[] a = new int[] { 1, 2, 5, 4, 1, 4, 7, 2, 9, 0 };
    int [] b =  new  int [] { 2, 4, 7, 8 };
    找他们相同的元素,
    List<int> c = new List<int>();
     
         
    foreach(int a in A){
        foreach(int b in b) {
           if (a==b) {
    c.add(a);
    } } }
    
    
    而Linq 的用法
     
         
    IEnumerable<int> C = from x in a
                         from y in b
                         where x == y
                         select x;

    /////////////////////////
    Linq: 命名空间是System.Linq 核心对象 IEnumerable关键字:

     from :      指定数据源和范围变量(类似于迭代变量)。

        where:     根据一个或多个由逻辑“与”和逻辑“或”运算符(&& 或 ||)分隔的布尔表达式筛选源元素。

        select:    指定当执行查询时返回的序列中的元素将具有的类型和形式。

        group:    按照指定的键值对查询结果进行分组。

        into:       提供一个标识符,它可以充当对 join、group 或 select 子句的结果的引用。

        orderby: 基于元素类型的默认比较器按升序或降序对查询结果进行排序。

        join:       基于两个指定匹配条件之间的相等比较来联接两个数据源。

        let:         引入一个用于存储查询表达式中的子表达式结果的范围变量。

        in:          join 子句中的上下文关键字。

        on:         join 子句中的上下文关键字。

        equals:   join 子句中的上下文关键字。

        by:         group 子句中的上下文关键字。

        ascending:orderby 子句中的上下文关键字。

         descending:orderby 子句中的上下文关键字。
    语法说明,每个LINQ语句都以 from作为开头,以 select作为结束,这点和T-SQL语法不通的切记先入为主的思考。其他关键字如 where则类似T-SQL作为筛选判断条件。例如: 
    IEnumerable<T> nums =  from  n  in  nums  where  ....  orderby ...  select ....
    NET3.0 可以用 
    var nums = from n in nums where .... orderby... select....
  2. 案例程序
    普通查询
    var query = from num in num 
                select num.ProperyA
    筛选查询
    
    var query = from obj in objs where obj.ProperyA > Condition select obj
    分组查询
     
    var query = from obj in objs
                group obj by obj.PropertyA into g
                orderby g.Key
                select g;
    内联查询
     
    var query= from obj1 in objs1 join obj2 in objs2 on obj1.ID equals obj2.ID select new { A= obj1.Property, B = obj2.Property };
    左外联查询
    
    var query = from obj1 in objs1 join obj2 in objs2 on obj1.ID equals obj2.Obj1ID into g from subpet in g.DefaultIfEmpty() select new { P1 = obj1.P1, P2 = (subpet == null ? null : subpet.P2 ) };
    
    MSDN的教程
    http://msdn.microsoft.com/zh-cn/library/vstudio/bb397906.aspx
    
    
    
    
  3. 延迟加载 (delay loaded/Lazy loading): 语句延迟执行,直到真正需要执行语句的时候才去执行那条语句
    延迟加载(Lazy loading)与直接加载(Eager loading)是一种设计模式,并不是Linq to Sql中独有的
    延迟加载就是将对象的初始化延迟,在程序使用该对象时才去初始化,如果不使用则不会进行初始化。使用延迟加载主要是为了提高程序的执行效率。-- from 百度百科
    public static class LocalExtensions
    {
            public static IEnumerable< string > ConvertCollectionToUpperCase( this IEnumerable <string > source)
            {
               
                 foreach (string str in source)
                 {
                     Console .WriteLine("ToUpper: source {0}" , str);
                     yield return str.ToUpper(); 
                 }
            }
     }

    {
    string [] stringArray = { "abc" , "def", "ghi" };
               
    var q = from str in stringArray.ConvertCollectionToUpperCase()
                        select str;
     
    foreach (string str in q)
           Console .WriteLine("Main: str {0}" , str);
    }

    输出
    ToUpper: source abc   // 处理一条
    Main: str ABC             //  返回一条 
    ToUpper: source def   // 处理一条 
    Main: str DEF              //  返回一条
    ToUpper: source ghi
    Main: str GHI

  4. Lambda 表达式 格式
    (parameters) => {expression}
    
    
    
     
        
    delegateintdel(inti);
    publicvoidExample6() 
    {
    del myDelegate = x => x * x;           
    intj = myDelegate(5); //j = 25
    Console.writeLine(j);
    }
     
    int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
    int oddNumbers = numbers.Count(n => n % 2 == 1);
    
    //
    
    var array = new int[]{1,2,3,4,5};
    
    var query1 = from arr in array
                 select arr;
    
    var query2 = array.Select(e => e);
    

    查找
    var array = new int[]{1,2,3,4,5};
    
    var query1 = from arr in array
                 where arr > 2
                 select arr;
    
    var query2 = array.Where(e => e > 2);
    
    
    最大
    
    var array = new int[]{1,2,3,4,5};
    
    var max = (from arr in array.Where(e => e > 2)
               select arr).Max();
    
     
  5. Linq 对Dataset的操作
参考
CrewAI 多 Agent 实战包 v1(Mock免Key跑通+通义千问可选+流水线样例) 本资源是 CrewAI 风格多 Agent 可运行工程包:研究→写作→审校等流水线样例。无 API Key 时自动降级 Mock 引擎跑通;有 DASHSCOPE_API_KEY 时可接真实 CrewAI + 通义千问。含中文 README、samples、smoke 留档、单元测试。本包不含密钥。关联博客:https://blog.youkuaiyun.com/mtl1994 立即下载

相关推荐

保姆级教程:用Altium Designer 24从零画一块PCB(附完整库文件与避坑清单)

本文提供了一份详细的Altium Designer 24(AD24)PCB设计教程,从工程创建到最终文件输出,涵盖元件库管理、原理图设计、PCB布局布线等全流程。特别适合初学者,包含STM32最小系统板的实战案例,附完整库文件和避坑清单,帮助用户快速掌握AD24的核心功能与技巧。

weixin_27697385的博客 249

LINQ Learning Summary

c.Template_Tags.Any(x => x.Tag.Translation.Contains(tsc.tag_t_part)) In Linq, the contains is same as the "like %" function in T-SQL ***********************************************************

MY Dream 324

UART中断接收的实战陷阱:HAL库常见误区与性能调优指南

本文深入解析STM32 HAL库UART中断接收机制,揭示常见实战陷阱如数据溢出、中断优先级配置不当等,并提供性能调优方案。重点介绍如何使用空闲中断处理不定长数据、DMA与中断混合模式优化,以及工业级错误恢复与流量控制策略,帮助开发者构建稳定可靠的串口通信系统。

pea55的博客 747

LINQ Learning-GroupingOperators(分组)

  最近在网上找到一个关于LINQ学习的例子,它将不同的操作分不同的项目来讲,今天先来看一下group....by...   先看一下这里的数据构造是怎么做的。          DataSet ds = new DataSet(); //先实例化一个DataSet ds.Tables.Add(Cr...

weixin_30378311的博客 127

Yolov8-pose关键点检测:loss优化 | LRM loss困难样本挖掘,提升难样本、遮挡物等检测精度

LRM loss应用到能够大幅提升pose遮挡物性能

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1715

在STM32F103RBT6微控制器上利用USB虚拟Com端口技术,高效实现ADC数据传输:详细操作步骤与示例代码解析

以上就是在STM32F103RBT6上使用USB虚拟Com端口实现ADC数据传输的全部内容。虽然过程中有很多步骤和细节需要注意,但只要按照步骤来,理解每一段代码的作用,就完全可以掌握这个过程。在实际应用中,我们可能需要根据实际需要修改一些代码,如调整ADC的参数,改变数据的处理方式等。但是,只要理解了这个过程,我们就可以很灵活地进行修改。希望这篇文章对你有所帮助。如果你有任何疑问,欢迎在评论区留言,我会尽我所能进行解答。

qq_38334677的博客 1168

Vue3 - 超详细最新 wangEditor V5 富文本编辑器安装引入及使用教程,提供工具栏配置、基础富文本功能、API使用示例教程等(新手小白快速引入并植入到项目中)

vue3,wangEditorv5富文本编辑器,wangEditorv5官方文档,vue3最新安装wangEditorv5富文本详细使用教程,vue3使用wangEditorv5编辑器示例代码,vue3网站网页安装植入富文本编辑器教程,vue3wangEditor使用api,vue3安装富文本控制台出现报错如何解决,vue3wangEditor-v5工具栏配置,vue3中使用富文本编译器wangEditor5的方法,wangeditor5在vue3中的全使用过程,vue3超详细最新wangedi

🏆 前端领域优质创作者 4253

[U3D Learning Note] Unity C# Survival Guide (18) -- LINQ

LINQ: language intergrated query. allow us filter through data, especially filter through arrays and lists.

24/7 191

在Windows10上安装WSL2

WSL2是微软提供的Windows子系统,允许在Windows 10和11上运行Linux环境,提供更好的性能和兼容性。安装WSL2需要启用WSL功能、更新系统、安装WSL2内核,并设置为默认版本。之后,可以通过Microsoft Store安装Linux发行版,并使用WSL命令启动和管理它们。

howard2005的专栏 5940

Python爬虫实战:利用Requests-HTML与异步技术高效爬取B站视频信息及弹幕数据分析

B站的弹幕,远非简单的评论功能,它是一种独特的、实时互动的社交方式,是观众情感的集体宣泄和共鸣。无论是用于内容创作者优化视频结构,还是用于社会学、传播学的研究,亦或是简单的个人兴趣分析,都具备极高的价值。stop_words = {'的', '了', '是', '我', '你', '他', '她', '它', '在', '有', '不', '吗', '吧', '啊', '这', '那'}本文不仅是代码的堆砌,更注重原理的剖析、反爬策略的应对以及工程化的思考,旨在为读者提供一份紧跟技术前沿的实战指南。

2201_76125261的博客 389

必须学习的.Net技术

1、WCF (Windows Communication Foundation):虽然WCF显然没有WPF或SilverLight那么吸引人,但是它却是在.NET框架下解决业务问题的基础。所以你今年至少要学习一门.NET的新技术,那你就选择WCF吧。 2、ADO.NET (and LINQ):这是让你与数据层打交道的技术。并且LINQ提供了将各种数据组合起来的方法。如果以上两个技术你都不熟悉的话

魔术猿-Vezn 919

LangChain4j + MCP:从工具协议到生产级 Agent

这两年,很多团队都已经把「大模型问答」接入到系统里了:前端一个输入框,后端调一下 OpenAI / DeepSeek / 本地模型,返回一段回答——这类 「简单问答型」AI 功能它只能说,不会做:不会主动查数据库,不会调用你的接口,不会帮你真正执行脚本;面对复杂一点的需求,比如「帮我生成这个报表的 SQL 并执行一下」,普通 ChatGPT 式的问答就开始力不从心了。而Agent 智能体想解决的,就是这件事:不只是回答你「怎么做」,而是能自己思考、自己决定要不要用工具、再用工具把事做完。

OFFTime_we的博客 1152

10项必学的.NET技术

1、WCF (Windows Communication Foundation):虽然WCF显然没有WPF或SilverLight那么吸引人,但是它却是在.NET框架下解决业务问题的基础。所以你今年至少要学习一门.NET的新技术,那你就选择WCF吧。 2、ADO.NET (and LINQ):这是让你与数据层打交道的技术。并且LINQ提供了将各种数据组合起来的方法。如果以上两个技术你都不熟悉的话

gaoming918的专栏 567

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

101 LINQ Samples: Generation Operators

RangeThis sample uses Range to generate a sequence of numbers from 100 to 149 that is used to find which numbers in that range are odd and even.publicvoidLinq65(){varnumbers=fromn...

weixin_30699235的博客 276

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LinQ学习之旅(1)

关注.NET的程序员,对LinQ这个名词应该已经听说过了,上个星期和THIN见了一下面,他给我演示了一下LinQ,觉得很有意思,有些东西很像JavaScript。后来在他的博客里也看到他写的一编文章。自己也写了一个小Demo,现在拿出来和大家分享一下,这编都是比较简单的例子,因为我也是才自学那么几天时间, Demo1: 从一个整型数组中找出偶数: 原...

weixin_30763455的博客 82

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Learning hard 学习笔记

第一章 你真的了解C#吗 1.什么是C#, 微软公司,面向对象,运行于.NET Framework之上, 2.C#能编写哪些应用程序, Windows应用桌面程序,Web应用程序,Web服务, 3.什么是.NET Framework, 全面的类库,内存管理,通用类型系统,开发结构和技术,语言互操作性, 4..NET Framework组成, 公共语言运行时(CLR)和类库...

weixin_30919235的博客 640

阅读《LEARNING HARD C#学习笔记》知识点总结与摘要四

又是一个周末,刚好有时间,又继续复习与总结了,希望能让大家受益,不足之处欢迎指正,谢谢! 十八. Lambda 1.Lambda表达式:匿名方法的另一种表现形式,它可以包含表达式和语句,且用于创建委托或转换为表达式树,定义语法:(形参列表)=>{方法体}; 单个参数时,可以省略括号 2.Lambda表达式树是用来表示Lambda表达式逻辑的一种数据结构,它将代码表示成一个对象树,而非可...

weixin_30612769的博客 118

[NTU-Machine-learning-note]1 Introduction(3)

科大云炬 404

C# Learning

windowsform位置问题 属性:startPosition:WindowsDefaultLocation int x = Screen.GetWorkingArea(this).Width-this.Width-10; int y = Screen.GetWorkingArea(this).Height-this.Height-10; this.Location = new...

今年依旧12岁 421

[NTU-Machine-learning-note]1 Introduction(1)

科大云炬 353

【awesome-dotnet-core-learning】(2)-Sprache.Calc-表达式计算器

【awesome-dotnet-core-learning】(2)-Sprache.Calc-表达式计算器 示例代码托管在GITHUB上, 欢迎STAR! 严格来说, Sprache.Calc只是上一篇Sprache-解析器构建库中介绍的Sprache的一个扩展库,而且未罗列在awesome-dotnet-core中.但是表达式计算在很多应用中都有需求,所以单独写一篇博客介绍它. 简介 ...

weixin_30258901的博客 191

[U3D Learning Note] Unity C# Survival Guide

unity官方教程Unity C# Surival Guide 学习笔记

24/7 202
上一篇: C++ 传值,传引用和传指针-参考Effective C++ 第三版Item20~21
下一篇: 从大端小端,到联合体与结构体
dannyPolyu
博客等级 码龄14年 4粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值