Linq使用方法】的更多相关文章

//重复元素:3,4,5 //不重复元素:1,8,9 , , , , , , , , , , }; //不重复元素 var unique = arr.GroupBy(i => i) .Where(g => g.Count() ==) .Select(g => g.ElementAt()); foreach (var i in unique) Console.WriteLine(i); //分割线 Console.WriteLine("==="); //重复元素 var…
Linq扩展方法之Aggregate  对序列应用累加器函数; 函数模板:// 函数名:对序列应用累加器函数. // Parameters:参数要求 // source:要聚合的 System.Collections.Generic.IEnumerable`1. // func:要对每个元素调用的累加器函数. // Type parameters:参数类型 // TSource:source 中的元素的类型. // // Returns:累加器的最终值. // Exceptions: // T:…
比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>>,按说JObject类型的对象是可以直接调用Select.Where等linq扩展方法的,但偏偏就是不行,代码如下: using System.Linq; ... var jobj = new JObject(); var xxx = jobj.Select(x=>x); //报错:JObject未…
一.Linq扩展方法 1.扩展方法必须是静态方法.扩展方法所在的类必须是静态类 2.扩展方法里面的参数必须制定this关键字,紧跟需要扩展的类型,如下: 二.泛型约束 1.使用泛型的原因,是在不知道需要扩展的类型时(这里主要时指对象类型,比如:可能时student类型,可能时person类型)前提下使用泛型,但使用泛型时需要加约束 2.泛型约束常用支持以下几个 where T : struct              T必须是一个结构类型 where T : class            …
文件目录:aspnetboilerplate-dev\aspnetboilerplate-dev\src\Abp\Collections\Extensions\EnumerableExtensions.cs using System; using System.Collections.Generic; using System.Linq; namespace Abp.Collections.Extensions { /// <summary> /// Extension methods for…
Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>>,按说JObject类型的对象是可以直接调用Select.Where等linq扩展方法的,但偏偏就是不行,代码如下: using System.Linq; ... var jobj = new JObject(); var xxx = jobj.Select(x=>x); //报错:JObject未包含…
目录 1 linq介绍 1.1 linq产生背景 1.2 linq使用范围 1.3 linq核心程序集 1.4 linq架构图 1.5 linq使用形式对比 1.5.1 linq To Objects 1.5.2 linq To Xml 1.5.3 linq To Sql 1.5.4 LINQ to DataSets 1.5.5 小结 2.linq To Objects实际应用两例 2.1左联与内联 2.1.1 本质区别 2.1.2 左联应用 2.1.2.1 程序示例 2.1.2.2 程序解释…
概述 本节主要解说扩展方法,涉及LinQ的详细知识不多. 扩展方法的描写叙述 .net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net framework在类中为我们提供了多么多的方法,有时候仍然不能满足我们的需求,比如:你想让字符串对象具有ToPascal方法,含义就是将字符串转化为Pascal格式,并返回,我们知道,.net framework提供的String类中并没有为我们提供对应的方法,此时,我们应该怎么做才干够达到我们的目的呢?有人说能够继承Strin…
在使用Linq 提供的扩展方法时,First(OrDefault), Single(OrDefault), Last(OrDefault)都具有返回单个元素的功能.MSDN对这些方法的描述只有功能说明,没有关于内部的相关实现的描述说明. 首先我们来看下MSDN上关于这些扩展方法的官方描述: First: 返回序列中的第一个元素 . FirstOrDefault: 返回序列中的第一个元素:如果未找到元素,则返回默认值. Last:返回序列的最后一个元素. LastOrDefault: 返回序列中的…
上节讲到使用linq的查询关键字进行查询,这节讲一下linq查询的另一种方式--linq方法. 使用linq方法语法,必须要会用lambda表达式,配合lambda表达式才能体会到linq的优雅便捷. linq方法是一系列的扩展方法,对于实现了IEnumerable接口的对象,都可以使用,扩展方法在VS智能提示中显示为一个正方体加一个向下的虚箭头. 对于上节的代码,使用方法语法则可以简洁为一行: int[] vs = { 1, 6, 3, 2, 5 }; var a = vs.Where(v =…
// Summary: // 确定序列中的所有元素是否满足条件. // Parameters: // source:包含要应用谓词的元素的 System.Collections.Generic.IEnumerable`1. // predicate:用于测试每个元素是否满足条件的函数. // Type parameters: // TSource:source 中的元素的类型. // Returns:如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false.…
int pollid = poll.Where(f => f.PollID < CurrentId).OrderByDescending(o => o.PollID).FirstOrDefault().PollID; //上一条 int pollid = poll.Where(f => f.PollID > CurrentId).OrderByDescending(o => o.PollID).LastOrDefault().PollID; //下一条 //排序设置 p…
从 stackoverflow.com 上抄来的,将 IEnumerable 中的元素进行切分的方法,无动态内存分配,地球上最快的实现: public static class LinqExtensions { /// <summary> /// 将 source 中的条目按照 partitionSize 指定的每组数量进行分组 /// http://stackoverflow.com/questions/3773403/linq-partition-list-into-lists-of-8-…
public IQueryable<Vsec009ComSecComp> QueryList(Sec009ComSecCompQueryCondition condition) { var query = _currentUnitOfWork.Vsec009ComSecComps.AsQueryable(); //构建查询条件 ])) { query = query.Where(t => condition.Ids.Any(id => id.Equals(t.Id))); } }…
 (   from s in Base_SysMenus   join r in Base_RoleRights on s.Menu_Id equals r.Menu_Id into temp   from s_r in temp.DefaultIfEmpty()     join u in Base_UserRoles on s_r.Roles_ID equals u.Roles_ID into temp2   from t in temp2.DefaultIfEmpty()   where…
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-7  在别的LINQ查询操作中使用Include()方法 问题 你有一个LINQ查询,使用了类似这样的操作 group by,join,和where:你想使用Include()方法预先加载额外的实体.另外你想使用Code-First来管理数据访问. 解决方案 假设你有如图5-22所示的概念模型 图5-22 一个简单的包含Club和Event以及它们之间一对多关联的模型 在Visual S…
1.特性(Attributes) 特性(Attributes),MSDN的定义是:公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型.字段.方法和属性等.Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为.例如,在一个方法前标注[Obsolete]特性,则调用该方法时VS则会提示该方法已过期的警告,如下图: 又如,在.Net Re…
首先先来扯一下,这篇博文是我第一次写的,主要是我的一些摘录,希望对大家有所帮助. Linq的基础 •LINQ(读音link):Linq To SQL(过时).Linq To Object.Linq To XML.Linq To entity,目的:以统一的方式对数据进行操作.看起来非常像SQL语句,但是和SQL无关. •var关键字,var类型用来简化类型的声明,var i = 2,并不说明i是无类型的,编译器会自动根据右边的值推断(这叫类型推断)var代表的值.var只能用来语句中,不能用在返…
过滤操作符 Where 运算符(Linq扩展方法)根据给定条件过滤集合. 在其中扩展方法有以下两个重载.一个过载需要Func <TSource,bool>输入参数和第二个重载方法需要Func <TSource,int,bool>输入参数其中int是索引: 查询语法中的Where子句: 在上面的示例查询中,lambda表达式主体s.Age > 12 && s.Age < 20作为谓词函数传递,用于评估集合中的每个学生.Func<TSource, bo…
Enumerable.Distinct 方法 是常用的LINQ扩展方法,属于System.Linq的Enumerable方法,可用于去除数组.集合中的重复元素,还可以自定义去重的规则. 有两个重载方法: // // 摘要: // 通过使用默认的相等比较器对值进行比较返回序列中的非重复元素. // // 参数: // source: // 要从中移除重复元素的序列. // // 类型参数: // TSource: // source 中的元素的类型. // // 返回结果: // 一个 Syste…
不要再眼高手低了,这些Enumerable之常见Linq扩展方法都清楚掌握了吗?其实这是对我自己来说的! 例如:一个人这个技术掌握了一点那个技术也懂一点,其他的好像也了解一些,感觉自己啥都会一点,又觉得自己啥都不会! 好像是处于那种技术疯癫的症态中!独孤求败!其实主要还是不愿意动手实践一下,总是会对低的技术看不上,高的技术又学不懂,或者是半懂不懂,或者是坚持不下去等等, 这些都是不可取的,加油吧骚年! 步入正轨: 1:什么是Linq(下面专业的名词解释参考来自于网络以及官网的文档,点击这里) 1…
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集成查询).通过LINQ,我们可以使用相同API操作不同的数据源.接下来就让我们看看LINQ是什么以及如何使用? 再此之前,需要先了解的相关技术 1.        隐式类型.匿名类型.对象初始化器 1)        隐式类型,使用var关键字创建,C#编译器会根据用于初始化局部变量的初始值推断出变…
问题引出 这视乎是个完全不必要进行讨论的话题,因为linq(这里具体是linq to objects)本来就是针对集合类型的,数组类型作为集合类型的一种当然可以使用了.不过我还是想写一下,这个问题源于qq群里一位朋友的提问:.net的数组类型都隐式继承了Array类,该类是一个抽象类,并且实现了IEnumerable.ICollection.IList接口.但linq的方法都是针对实现了IEnumerable<T>泛型接口的,Array类并没有实现这些泛型接口,为什么可以使用这些方法呢? li…
从自己的印象笔记里面整理出来,排版欠佳.见谅!   1.LINQ: 语言集成查询(Language Integrated Query) 实例: var q=      from c in categories      join p in products on c equals p.Category into ps select new{Category=c, Products=ps}; 2.LINQ 类型 LINQ to Objects(或称LINQ to Collection),这是LIN…
返回<8天掌握EF的Code First开发>总目录 本篇目录 管理数据库创建 管理数据库连接 管理数据库初始化 填充种子数据 LINQ to Entities详解 什么是LINQ to Entities 使用LINQ to Entities操作实体 LINQ操作 懒加载和预加载 插入数据 更新数据 删除数据 本章小结 自我测试 本篇的源码下载:点击下载 先附上codeplex上EF的源码:entityframework.codeplex.com,此外,本人的实验环境是VS 2013 Upda…
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 5-2  预先加载关联实体 问题 你想在一次数据交互中加载一个实体和与它相关联实体. 解决方案 假设你有如图5-2所示的模型. 图5-2 包含Customer和与它相关联信息的实体 和5-1节一样,在模型中,有一个Customer实体,一个与它关联的CustomerType和多个与它关联的CustomerEamil.它与CustomerType的关系是一对多关系,这是一个实体引用(译注:Cu…
引言 前几天针对一个js数组交集的问题请教了下同事,他第一反应就是循环,这也是常规思路,因为我个人更倾向于js些,我便开玩笑,不知道js能不能像linq那样实现这些操作呢?果断百度了一把,果然有现成框架啊,真是高手在民间啊. 官方的介绍中说支持90多个方法,我觉的起码是C# Linq有的方法它肯定有. 优点 1.支持jQuery插件的方式.jquery.linq.min.js. 2.也可以像普通js方法一样使用.linq.min.js. 3.当然用习惯VS的童鞋肯定希望有个良好的智能感知,是的,…
前言 在EFCore中执行Sql语句的方法为:FromSql与ExecuteSqlCommand:在EF6中的为SqlQuery与ExecuteSqlCommand,而FromSql和SqlQuery有很大区别,FromSql返回值为IQueryable,因此为延迟加载的,可以与Linq扩展方法配合使用,但是有不少的坑(EFCore版本为1.1.0),直接执行Sql语句的建议不要使用FromSql,但是EFCore中并没有提供SqlQuery方法,因此下面会贴出SqlQuery的实现代码供大家参…
问题引出:在实际中遇到一个问题,要进行集合去重,集合内存储的是引用类型,需要根据id进行去重.这个时候linq 的distinct 就不够用了,对于引用类型,它直接比较地址.测试数据如下: class Person { public int ID { get; set; } public string Name { get; set; } } List<Person> list = new List<Person>() { new Person(){ID=1,Name="…