![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LINQ
文章平均质量分 89
Abel_01_xu
0 1
展开
-
匿名类型
一、匿名类型概述 匿名类型用‘var’来表示,其好处就是开发人员不需要指定具体的类型,C#将会根据运算符右侧表达式所定义的给出数据类型。换言之,该匿名类型为何种类型交由C#中间编译器来分析,而编译器给出的类型可能是我们熟悉的基础类型,也有可能是我们自定义的类型,甚至是我们未曾定义过的类型。当然,对于简单的类型定义,是无法体现出使用var的优越性的,它的最大价值在于可用它来创建单次使用的元...原创 2018-03-18 17:49:34 · 627 阅读 · 0 评论 -
联接查询结果
一、使用多个from子句 当使用多个from子句时,不自然的就会想到需要使用join等连接符,然而这需要看它们之间是否存在相互关系。相互关系是指关系中用以说明一个序列如何与另一个序列相关联的部分,此时,可以通过join子句中的equals关键字,或通过不等式以及多个表达式来实现。 接下来举一个示例,用于说明,当我们使用多个from子句时,由于没有相互关系,故无须使用join【示例】us...原创 2018-03-29 15:02:04 · 344 阅读 · 0 评论 -
Linq与事务
【执行前】【代码】using System.Data.Linq;using System.Linq;using System.Transactions;namespace 事务{ class Program { static void Main(string[] args) { NewDataContext ...翻译 2018-04-04 14:45:39 · 1285 阅读 · 0 评论 -
调用存储过程以及用户自定义函数来更新匿名关系数据
【示例】using System;using System.Data.Linq;using System.Data.Linq.Mapping;using System.Reflection;using 通过linq查询关联数据库表;namespace 更新匿名关系型数据{ public class DataContextBase:DataContext { ...翻译 2018-04-04 14:03:58 · 275 阅读 · 0 评论 -
创建更好的实体以及映射继承和聚合
一、使用可空类型定义更好的实体 当我们需要从数据库中读取数据时,常常需要进行DBNull或null检验,为了避免这种吃屎的感觉,我们可以考虑使用可空类型以避免空值检验。 那么,如何定义可空类型呢?值得注意的是,只有值类型能够被定义为可空类型,原因是引用类型本身就已经是可空类型了。ok,现在就可以扯一下可空类型的定义方式了: 1. 通过泛型类型Nullabel&...翻译 2018-04-02 17:06:32 · 213 阅读 · 0 评论 -
Select和SelectMany
一、带有函数调用功能的选择using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace 带有函数调用功能的选择{ class Program { static void Main(string[] args) { ...翻译 2018-03-29 10:12:46 · 1441 阅读 · 0 评论 -
集合运算
一、Distinct Distinct用于测试集合中的元素并忽略重复值。Dintinct既可以在一个序列上调用,也可以在一个实现了IEquallity-Comparer的对象上调用。【示例】1.1 定义实体类using System;namespace 通过对象的字段找出非重复对象{ /// <summary> /// 实体类 /// </s...原创 2018-03-20 14:23:35 · 687 阅读 · 0 评论 -
聚合运算
一、聚合 聚合运算就是从一组值中计算出一个值。Aggregate扩展方法允许实现自定义的聚合运算。【示例】合并、求平均值、最大值、最小值using System;using System.Collections.Generic;using System.Linq;namespace 使用Aggregate扩展方法实现的自定义聚合{ class Program {...原创 2018-03-20 13:51:37 · 5206 阅读 · 0 评论 -
对查询出的数据进行排序和分组
一、对信息进行排序 通过orderby关键字,LINQ可以实现升序和降序排列。LINQ还支持次要排序(也可以按升序和降序排列),只要将需要排序的项用逗号隔开即可。 在一个集合上调用Reverse扩展方法即可翻转该集合中的元素。 .NET 3.5中引入的扩展方法:OrderBy、OrderByDescending、ThenBy、ThenByDescending以及Rever...原创 2018-03-20 10:32:10 · 2705 阅读 · 0 评论 -
标准查询运算符
一、概述 LINQ是.NET的一个扩展,是语言集成查询。LINQ查询会发出为对扩展方法和泛型委托的调用,而这些扩展方法和泛型委托都是.NET Framework不可或缺的组成部分。 LINQ查询均开始于关键字from。那么为什么开头的不是像SQL中的select开头呢?这个嘛,我们可以从考虑投影开始。在select子句中,可以定义新类型,并根据源类型元素了解初始化这种新类型的命...原创 2018-03-20 08:59:32 · 414 阅读 · 0 评论 -
Lambda表达式和闭包
一、Lambda表达式1.描述 Lambda表达式由一个左部(表示输入参数)、=>符号以及一个右部(表示需要求值的表达式)组成。【示例】using System;namespace 简单的Lambda表达式{ class Program { //Lambda表达式省略了delegate关键字、函数头、参数类型、方括号以及return关键字 ...原创 2018-03-19 15:45:57 · 690 阅读 · 0 评论 -
扩展方法和分部方法
一、概述 从概念上讲,扩展方法就是装饰模式(Decorator,一种结构型模式)的一种实现,装饰模式实际上就是利用集成和复合动态添加行为。 当不能给现有类添加行为时,就可以考虑扩展方法,其作用就相当于这个方法属于这个类一样。例如,当我们不能继承一个密封类来为其添加行为时,同样,一些基础类型也是无法继承的。显然,扩展方法提供了一种无需集成的添加行为的方式。 扩展方法允许定义...原创 2018-03-19 13:49:59 · 378 阅读 · 0 评论 -
复合类型初始化
一、实现能够通过命名类型进行复合类型初始化的类 对象初始化器语法能够通过一种简洁的标记法来创建对象并为其字段赋值,而程序员无需为此定义不同的构造函数。 通过命名实例完成对象初始化的基本语法是,使用普通对象声明(或匿名类型声明)、new关键字以及运算符左侧的类型,另外,需要使用参数名、赋值运算符以及值,而不是圆括号和参数值。 命名实例初始化的一般语法如下: ...原创 2018-03-19 10:10:13 · 498 阅读 · 0 评论 -
使用LINQ查询关系型数据库
一、概述LINQ支持自定义提供者,这些提供者将LINQ表达式树转换为数据源所支持的语言,值得关注的是LINQ可以通过IQueryable接口访问ADO.NET对象。LINQ可以直接对DataSet进行查询,也可以用DataContext和Table(实现了ITable、IQueryable、IEnumerable)。最基本的工作是定义一个对象关系映射(ORM),用于将C#实体类与数据库中的表映射起...原创 2018-04-02 10:06:47 · 2425 阅读 · 0 评论