文章分类 - Linq
摘要:前言在使用 Lambda 表达式时,我们常会碰到一些典型的应用场景,而从常用场景中抽取出来的应用方式可以描述为应用模式。这些模式可能不全是新的模式,有的参考自 JavaScript 的设计模式,但至少我看到了一些人为它们打上了名字标签。无论名字的好与坏,我还是决定给这些模式进行命名,至少这些名字很具有描述性。同时我也会给出这些模式的可用性、强大的部分和危险的部分。提前先说明:绝大多数模式是非常强大的,但有可能在代码中引入些潜在的 Bug。所以,慎用。目录导航回调模式 (Callback Pattern)函数作为返回值 (Returning Functions)自定义函数 (Self-Defin
阅读全文
摘要:LINQ TO SQL(代码下载)我们以一个简单的销售的业务数据库为例子表结构很简单:Users(购买者(用户)表),Products(产品信息表),Sales(销售表),ReturnSales(退货信息表)在Sales表中,我们就知道谁买的了(根据UserId),然后买的时间,买的产品(根据ProductCode),Sales和ReturnSales一样的结构的接下来我们按照 小孩LINQ(四)中的方法建立好dbml文件,以便好操作数据。准备工作后完成后如下:附一(数据库代码):USE [master]GO/****** Object: Database [SalesDB] Scri...
阅读全文
摘要:1 LINQ TO Objects续2(代码下载)新建项目 linq_Ch3控制台程序1.1 操作字符串①查找字符串中包含的大写字母,字符串是由多个char类型组成 //1.查找字符串中包含的大写字母 string string1 = "int I=10;string String1=(I%2==0?\"偶数\":\"奇数\")"; //过滤字符换中所有的大写字母,判断小写用IsLetter,数字用IsDigit,标点用IsPunctuation,控制字符用IsControl,分隔符用 IsSeparator,符号类型用 //I...
阅读全文
摘要:1 LINQ TO SQL(代码下载)我们以一个酒店管理系统的数据库为例子 表结构很简单:GuestInfo(客人信息表),Room(房间表),RoomType(房间类型表),HotelInfo(每个月盈利信息) 整体就是,Room中有个房间类型ID的外键,客人表中有个房间的ID的外键。月盈利信息先不管 准备:新建项目 linq_Ch4控制台程序,新建DB文件夹 右击DB文件夹,添加→新建项 选择LINQ to SQL类,文件名为 Hotel.dbml,添加 打开服务器资源管理器,我的快捷键是Ctrl+W+L 选中这四张表,往已经打开的Hotel.dbml文件中拖放,然后Ctrl+S保存 1.
阅读全文
摘要:1 LINQ TO Objects续(代码下载)新建项目 linq_Ch2控制台程序,新建一个Entity文件夹1.1 学生成绩查询(练习Join)有三张表如下:学生表,班级表,成绩表。接下来我们按照这个在Entity文件夹建立3个实体类,类名跟表名一样。using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace linq_Ch2.Entity{ public class Student { /// <summary> /// 学生...
阅读全文
摘要:在说LINQ之前必须先说说几个重要的C#语言特性一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在foreach一个集合的时候, 也要为遍历的集合的元素,指定变量的类型 隐式类型的出现, 程序员就不用再做这个工作了。 (2)使用方法 来看下面的代码: var a = 1; //int a = 1; var b = "123";//string b = "123"; ...
阅读全文
摘要:在看本篇文章之前我假设您已经具备我之前分析的一些原理知识,因为这章所要讲的内容是建立在之前的一系列知识点之上的,为了保证您的阅读顺利建议您先阅读本人的LINQ系列文章的前几篇或者您已经具备比较深入的LINQ原理知识体系,防止耽误您的宝贵时间。到目前为止我们对LINQ的执行原理已经很清楚了,从它的前期构想到它真正为我们所用都有足够的证据,但是似乎问题并没有我们想的那么简单,问题总是在我们使用中频频出现尤其是新技术的使用,当然有问题才能有进步。[王清培版权所有,转载请给出署名]一:LINQ执行表达式在研究LINQ的过程中,参考了很多技术文章还有技术书籍,毫无疑问的是Linq to Provider
阅读全文
摘要:LINQ是.NET Framework 3.5的新特性,其全称是 Language Integrated Query,即语言集成查询,是指将查询功能和语言结合起来。从而为我们提供一种统一的方式,让我们能在C#或VB.NET语言中直接查询和操作各种数据。本系列文章力图对LINQ进行一个完整和详细的介绍,希望能对广大园友有些许帮助。也期待能和大家一起讨论和学习,共同进步!第一部分:从这里开始学习LINQ本部分包含三篇博客,讨论了LINQ的作用以及C#3.0为LINQ提供的语言特性:隐式类型局部变量、自动属性、匿名类型、扩展方法、Lambda表达式、对象初始化器。LINQ之路1:LINQ介绍LINQ
阅读全文
摘要:LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。从技术角度而言,LINQ定义了大约40个查询操作符,如select、from、in、where以及order by(C#中)。使用这些操作符可以编写查询语句。不过,这些查询还可以基于很多类型的数据,每个数据类型都需要一个单独的LINQ类型。看图,不解释
阅读全文
摘要:View Code static void Main(string[] args) { string desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //FileQuery2(desktop); if (!string.IsNullOrEmpty(FileQuery())) { Console.WriteLine(FileQuery()); } ...
阅读全文
摘要:3.5.环路执行对象模型、碎片化执行模型(假递归式调用)3.6.N层对象执行模型(纵横向对比链式扩展方法)3.7.LINQ查询表达式和链式查询方法其实都是空壳子3.8.详细的对象结构图(对象的执行原理)3.9.IQueryable<T>与IQueryProvider一对一的关系能否改成一对多的关系4.完整的自定义查询3.5】. 环路执行对象模型、碎片化执行模型(假递归式调用)这个主题扯的可能有点远,但是它关系着整个LINQ框架的设计结构,至少在我还没有搞懂LINQ的本意之前,在我脑海里一直频频出现这样的模型,这些模型帮助我理解LINQ的设计原理。其实在最早接触环路模型和碎片化模型是
阅读全文
摘要:阅读目录:1.开篇介绍2.扩展Linq to Object (应用框架具有查询功能)2.1.通过添加IEnumerable<T>对象的扩展方法2.2.通过继承IEnumerable<T>接口2.3.详细的对象结构图3.实现IQueryable<T> 、IQueryProvider接口3.1.延迟加载IEnumertor<T>对象(提高系统性能)3.2.扩展方法的扩展对象之奥秘(this IQueryable<TSource> source)3.3.分段执行IQueryable<T>中的子方法(Queryable中的扩展方法
阅读全文
摘要:这五种LINQ函数联接序列的方法非常奇妙,希望各位.NET程序员能掌握,并在实际开发中运用上。AD:今天我们来看看5种使用Linq函数联接序列的方法,这5种方法可以归入下列两类:同类的联接Concat()Union()不同类的联接Zip()Join()GroupJoin()Concat() – 串联序列最简单的序列合并,concat仅仅是将第二个序列接在第一个序列后面, 注意:返回的序列并没有改变原来元素的顺序:varhealthFoods=newList<string>{"fruits","vegetables","grains&
阅读全文
摘要:LINQ标准查询运算法是依靠一组扩展方法来实现的。而这些扩展方法分别在System.Linq.Enumerable和System.Linq.Queryable这连个静态类中定义。 Enumerable的扩展方法采用线性流程,每个运算法会被线性执行。这种执行方法如果操作类似关系型数据库数据源,效率会非常低下,所以Queryable重新定义这些扩展方法,把LINQ表达式拆解为表达式树,提供程序就可以根据表达式树生成关系型数据库的查询语句,即SQL命令,然后进行相关操作。 每个查询运算符的执行行为不同,大致分为立即执行和延时执行。延时执行的运算符将在枚举元素的时候被执行。 Enumerable...
阅读全文
摘要:出于工作需要,准备把LINQ的相关知识梳理一遍,希望能填补下之前学习漏掉的或是没有注意的地方,也为未来减轻压力~ LINQ查询表达式的基本语法很容易掌握,它使用C#常见的语言构造,从外观上看,和我们常用的SQL类似,并且查询表达式中的变量可以用匿名类型,所以在很多情况下,不需要指定变量类型就可以构建LINQ表达式。 LINQ的数据源可以是数据库对象或是XML流等,也可以使实现了IEnumerable或者泛型IEnumberable<T>接口的集合对象。 LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下:关键字说明from指定范围变量和数据源where 根据b
阅读全文
摘要:话说某项目需要在客户端执行全文搜索,包括多条件和部分匹配。开发一个新功能首先得google,像这样的代码外国同行早就给我们准备好了,没想到竟然落空。Google不成就只能开发了,我一看有个实习的小伙,那就你了,开发这个功能,顺便练习一下Linq。他写了半天代码也没写出来,只好写了个传统的代码交差(见后面)。于是我就写了下面的代码:public static List<DataRow> FullTextSearch(this DataTable dataTable, string[] keywords){var q = dataTable.AsEnumerable().Where&l
阅读全文
摘要:一.求两个集合的交集,并集,差集。1.求两个集合的交集 int[] A = {1, 2, 3, 4}; int[] B = {2, 4, 7, 8, 9};IEnumerable<int> enumerable = A.Intersect(B);输出结果:Intersect()方法:通过使用默认的相等比较器对值进行比较生成两个序列的交集。2.求两个集合的并集int[] A = {1, 2, 3, 4};int[] B = {2, 4, 7, 8, 9};IEnumerable<int> enumerable = A.Union(B);输出结果:Union()方法:通过使
阅读全文
摘要:先创建一个Person类,作为数据实体publicclassPerson{publicstringName{get;set;}publicstringSex{get;set;}publicintAge{get;set;}}List<Person>list=newList<Person>(){newPerson(){Name="Olive",Sex="女",Age=22},newPerson(){Name="Moyao",Sex="男",Age=23},newPerson(){Name=&qu
阅读全文
摘要:1、Cast、OfType操作符Cast和OfType:都用于将一个类型为IEnumerable的集合对象转化为一个类型为IEnumerable<T>的集合对象,两者的功能都是一样的,唯一的区别在于Cast操作符进行类型转换时,如果转换中出现转化失败的情况,则会抛出一个异常,而OfTyoe操作符只是把能够转换的元素转换掉。这里还是用上一节的例子:(该示例参考自Rookie_J博客)先新建一个ArrayList对象ArrayListarraylist=newArrayList(){newPerson(){Name="Olive",Sex="女"
阅读全文
摘要:/// <summary> /// 将Linq的结果集转化成DataTable /// </summary> /// <param name="query">结果集</param> /// <returns>DataTable</returns> public static DataTable ConvertToTable(IQueryable query) { DataTable dtList = new DataTable(); bool isAdd = fal...
阅读全文

浙公网安备 33010602011771号