![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linq
苍狼_2001
程序员之所以犯错误,不是因为他们不懂,而是因为他们自以为什么都懂。
展开
-
LINQ系列:C#中与LINQ相关特性
1. 匿名类型 通过关键字var定义匿名类型,编译器将根据运算符右侧表达式的值来发出一个强类型。 使用匿名类型时要遵守的一些基本规则: ◊ 匿名类型必须有一个初始化值,而且这个值不能是空值(null),因为类型是根据初始化器推断出来的; ◊ 匿名类型可以用于简单类型,也可以用于复杂类型。用于定义简单类型时,其价值不大。复合匿名类型需要有成员声明;原创 2017-07-01 20:43:08 · 206 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Select查询
1. 查询全部字段using (NorthwindContext context = new NorthwindContext()){ var expr = context.Products; foreach (var item in expr) { Console.WriteLine(item.ProductName); }}原创 2017-07-02 11:41:51 · 821 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Where条件
1. 单一条件查询var expr = context.Products .Where(p => p.ProductName == "LINQ to SQL");SELECT [Extent1].[ProductID] AS [ProductID], [Extent1].[CategoryID] AS [CategoryID], [原创 2017-07-02 11:42:49 · 398 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Transact-SQL函数
1. CASE WHEN ... THEN ...var expr = from p in context.Products select new { 商品ID = p.ProductID, 商品名称 = p.ProductName,原创 2017-07-02 11:45:06 · 219 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Join连接
1. 一对多var expr = context.Products .Where(p => p.Category.CategoryName == "LINQ to SQL" && p.UnitPrice > 10m) .Select(p => new { p.ProductID, p.ProductName });原创 2017-07-02 11:46:44 · 1166 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Group by/Having分组
1. 简单形式var expr = from p in context.Products group p by p.CategoryID into g select g;foreach (var item in expr){ Console.WriteLine(item.Key); foreach (var p i原创 2017-07-02 11:50:08 · 1181 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Exists/In/Any/All/Contains
1. Any 返回没有Product的Categoryvar expr = from c in context.Categories where !c.Products.Any() select c;SELECT [Extent1].[CategoryID] AS [CategoryID],原创 2017-07-02 11:51:39 · 1184 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Concat/Union
1. Concat 单列Concatvar expr = (from p in context.Products select p.ProductName) .Concat( from c in context.Categories select c.CategoryName原创 2017-07-02 11:52:34 · 482 阅读 · 0 评论 -
LINQ系列:LINQ to SQL Take/Skip
1. Takevar expr = context.Products .Take(10);var expr = (from p in context.Products select p) .Take(10);SELECT TOP (10) [c].[ProductID] AS [Product原创 2017-07-02 11:53:29 · 370 阅读 · 0 评论 -
LINQ系列:LINQ to XML类
LINQ to XML由System.Xml.Linq namespace实现,该namespace包含处理XML时用到的所有类。在使用LINQ to XML时需要添加System.Xml.Linq.dll的引用,在代码声明中添加using:using System.Xml.Linq;1. System.Xml.Linq namespace的类及其描述类原创 2017-07-02 11:55:51 · 250 阅读 · 0 评论 -
LINQ系列:LINQ to XML操作
LINQ to XML操作XML文件的方法,如创建XML文件、添加新的元素到XML文件中、修改XML文件中的元素、删除XML文件中的元素等。1. 创建XML文件string xmlFilePath = Server.MapPath("Data/Product.xml");XDocument doc = new XDocument( new XDeclarati原创 2017-07-02 11:56:26 · 286 阅读 · 0 评论 -
LINQ系列:LINQ to XML查询
1. 读取XML文件 XDocument和XElement类都提供了导入XML文件的Load()方法,可以读取XML文件的内容,并转换为XDocument或XElement类的实例。 示例XML文件:Product.xmlxml version="1.0" encoding="utf-8"?>Products> Product> ProductID原创 2017-07-02 11:56:58 · 274 阅读 · 0 评论 -
动态拼接LINQ 查询条件
以往我们都是通过判断的方式来拼接查询的SQL字符串,但是现在我们面对是强类型的LINQ查询,是否可以很方便的进行类似查询。 eg:string _UserID = string.Empty; _UserID = "E351D301-F64B-412C-B9EF-573F41235AF2"; string _UserName = string.Empty; ...转载 2018-04-17 09:57:38 · 540 阅读 · 1 评论 -
LINQ系列:LINQ to DataSet的DataTable操作
LINQ to DataSet需要使用System.Core.dll、System.Data.dll和System.Data.DataSetExtensions.dll,在项目中添加引用System.Data和System.Data.DataSetExtensions。1. DataTable读取列表DataSet ds = new DataSet();// 省略ds的F原创 2017-07-02 11:41:15 · 403 阅读 · 0 评论 -
LINQ系列:LINQ to ADO.NET概述
LINQ to ADO.NET 包括两种独立的技术: LINQ to DataSet 和 LINQ to SQL。 使用 LINQ to DataSet 可以对DataSet 执行丰富而优化的查询,而使用 LINQ to SQL 可以直接查询 SQL Server 数据库架构。 由 LINQ to DataSet 和 LINQ to SQL 实现的 LINQ提供程序可以将源数据转换为基于 I原创 2017-07-02 11:40:46 · 321 阅读 · 0 评论 -
LINQ系列:Linq to Object分区操作符
分区是指将一个单一的输入序列划分成两个或多个部分或序列,同时不会对输入元素重排序,返回一个新形成的部分。LINQ分割操作符包括Skip、SkipWhile、Take和TakeWhile。1. Skip Skip操作符会跳过一些元素到达序列中的一个指定的位置,将会略过特定数目的若干元素并且返回其余的元素。1>. 原型定义public static IEnumerab原创 2017-07-02 11:37:11 · 313 阅读 · 0 评论 -
LINQ系列:Linq to Object限制操作符
1. Where 限制操作符Where用于过滤序列,按照提供的逻辑对序列中的数据进行过滤。Where可以出现多次。1.1 原型定义public static IEnumerable Where(this IEnumerable source, Funcbool> predicate);public static IEnumerable Where(this I原创 2017-07-01 21:13:52 · 172 阅读 · 0 评论 -
LINQ系列:Linq to Object排序操作符
LINQ排序操作符包括:OrderBy、OrderByDescending、ThenBy、ThenByDescending及Reverse。1. OrderBy1>. 原型定义public static IOrderedQueryable OrderBy(this IQueryable source, Expression> keySelector);publi原创 2017-07-01 21:16:00 · 288 阅读 · 0 评论 -
LINQ系列:Linq to Object联接操作符
联接是指将一个数据源对象与另一个数据源对象进行关联或联合的操作。这两个数据源对象通过一个共同的值或属性进行关联。 LINQ的联接操作符将包含可匹配(或相同)关键字的两个或多个数据源中的值进行匹配。 LINQ有两个联接操作符:join和groupjoin。1. join join操作符类似于T-SQL中的inner join,将一个数据源与另一个数据源相联接,根据两原创 2017-07-01 21:19:52 · 220 阅读 · 0 评论 -
LINQ系列:Linq to Object分组操作符
分组是指根据一个特定的值将序列中的值或元素进行分组。LINQ只包含一个分组操作符:GroupBy。GroupBy1>. 原型定义public static IQueryable> GroupBy(this IQueryable source, Expression> keySelector);2>. 示例var expr = from p in原创 2017-07-01 21:24:17 · 480 阅读 · 0 评论 -
LINQ系列:Linq to Object串联操作符
串联是一个将两个对象联接在一起的过程。在LINQ中,串联操作将两个集合合并成一个集合,通过Concat操作符实现。Concat1>. 原型定义public static IQueryable Cast(this IQueryable source);public static IQueryable Concat(this IQueryable source1,原创 2017-07-01 21:26:02 · 198 阅读 · 0 评论 -
LINQ系列:Linq to Object聚合操作符
聚合函数在一系列的值上执行特定的运算,并返回单个值,如在给定元素的值上执行求和或计数运算。 LINQ共有7种聚合操作符:Aggregate、Average、Count、LongCount、Max、Min和Sum。1. Aggregate Aggregate操作符从某一特定序列或集合中收集值。当聚合完成时,它将序列中返回的值进行累积并返回结果。1>. 原型定义原创 2017-07-01 21:31:39 · 276 阅读 · 0 评论 -
LINQ系列:Linq to Object集合操作符
集合操作符对元素的集合或序列集合进行操作,并返回一个集合。LINQ共有4种集合查询操作符:Distinct、Union、Intersect和Except。1. Distinct Distinct操作符删除集合中重复的值,并返回该集合中互不相同的元素。1>. 原型定义public static IQueryable Distinct(this IQueryable原创 2017-07-01 21:36:26 · 234 阅读 · 0 评论 -
LINQ系列:Linq to Object生成操作符
生成操作符从现有序列值中创建新的序列。1. Empty Empty操作符返回一个指定类型的空集。1>. 原型定义public static IEnumerable Empty();2>. 示例var q = Enumerable.Emptyint>();Console.WriteLine(q == null);Console.WriteL原创 2017-07-01 21:38:00 · 201 阅读 · 0 评论 -
LINQ系列:Linq to Object转换操作符
转换是指将输入对象的类型转变为序列的动作。1. AsEnumerable AsEnumerable操作符将查询的输入以IEnumberable(T)类型返回。2. Cast Cast操作符将IEnumberable集合中的元素转换为指定的类型,当Cast运算符无法将源类型转换为目标类型时将抛出InvalidCastException。from T e i原创 2017-07-01 21:43:33 · 288 阅读 · 0 评论 -
LINQ系列:Linq to Object元素操作符
元素操作符从一个序列返回单个指定的元素。1. DefaultIfEmpty DefaultIfEmpty操作符将一个空集合替换为包含默认的单个值的集合。在返回序列为空且又需要返回一些对象时,可以通过该操作符返回一个默认值。1>. 原型定义public static IQueryable DefaultIfEmpty(this IQueryable source);原创 2017-07-01 21:50:44 · 278 阅读 · 0 评论 -
LINQ系列:Linq to Object相等操作符
相等操作符通过比较两个序列来检查它们相应的元素是否相同。如果两个序列有相同的元素,并且对应元素的值相同,则认为这两个序列是相等的。 SequenceEqual操作符判定两个集合是否相等。判定是通过并行地枚举两个数据源并比较相应元素来完成的。返回值是一个Boolean值——如果两个集合相等则返回true,否则返回false。SequenceEqual1>. 原型定义pu原创 2017-07-02 11:35:43 · 202 阅读 · 0 评论 -
LINQ系列:Linq to Object量词操作符
量词操作符返回一个Boolean值,指示序列中是否存在部分或全部元素符号指定条件。LINQ中量词操作符包括:All、Any和Contains。1. All All操作符判定在集合中是否所有的值都满足指定的条件。返回值是一个Boolean值。如果所有值都满足条件则返回true,否则返回false。1>. 原型定义public static bool All(this原创 2017-07-02 11:36:22 · 272 阅读 · 0 评论 -
LINQ的左连接、右连接、内连接
1、左连接:var LeftJoin = from emp in ListOfEmployeesjoin dept in ListOfDepartmenton emp.DeptID equals dept.ID into JoinedEmpDeptfrom dept in JoinedEmpDept.DefaultIfEmpty()select new ...转载 2018-04-17 10:03:34 · 110 阅读 · 0 评论