一:背景 1. 讲故事 前几天看同事在用 linq 给内存中的两个 model 做左连接,用过的朋友都知道,你一定少不了一个叫做 DefaultIfEmpty 函数,这玩意吧,本来很流畅的 from...in...join, 突然搞进来这么一个函数,真的是恶心他妈给恶心开门,恶心到家了,简化后的代码如下: class User { public int UserID { get; set; } public string Email { get; set; } } class Order { p…
当自定义一个类的时候,如果需要用到对比的功能,可以自己重写Equals方法,最整洁的方法是重写GetHashCode()方法. 但是,这个方法只适用于对象自身的对比(如if(a==b))以及字典下的Contains(如dicTest.Contains<T>(a)),在Linq下的Distinct下无效. Linq下的Distinct需要我们再写一个继承IEqualityComparer的类,分别如下 using System.Collections.Generic; namespace Ser…
原文链接: http://blog.csdn.net/shanyongxu/article/details/47208401 LINQ中的扩展方法 LINQ中where扩展方法,要想使用,必须导入using System.Linq;我们看一下这个方法的声明: public static IEnumerable<TSource > Where<TSource>(this IEnumerable<TSource> source,Func<TSource,bool>…
为EF操作方法添加扩展方法 BulkInsert 大致设计方式为 通过当前DbContext 获取当前连接字符串,调用连接字符串获取当前实体的所有字段及字段属性,映射到DataTable中 在调用System.Data.SqlClient下 SqlBulkCopy类库进行Copy操作,Copy到服务器中.…
Linq为我们提供了许多扩展方法,方便我们对数据源进行操作(Where,Select...).即使你不了解算法,也能使用Linq当回牛人.扩展方法本质并不是什么高深的技术,说白了就是一个Static静态方法. 声明扩展方法步骤: 创建一个名为MyHelper的类,约定了此类中的方法均是扩展方法.注意这个类必须是静态类(Static) 扩展方法必须是Static静态方法 第一个参数为待扩展的类型,前面标注this 如果MyHelper在一个类库中,记得对其添加引用并using相关名称空间 A si…
老赵的博客:http://blog.zhaojie.me/2008/02/using-translate-method-and-modify-command-text-before-query-in-linq-to-sql.html http://www.csharpwin.com/dotnetspace/9639r2943_2.shtml 1.DataContext扩展方法 public static class DataContextExentions { /// <summary> //…
List<miniclass> classs = new List<miniclass>(); classs.Add(new miniclass() { token = ", id = " }); classs.Add(new miniclass() { token = ", id = " }); classs.Add(new miniclass() { token = ", id = " }); var dx = cla…
在使用Linq 提供的扩展方法时,First(OrDefault), Single(OrDefault), Last(OrDefault)都具有返回单个元素的功能.MSDN对这些方法的描述只有功能说明,没有关于内部的相关实现的描述说明. 首先我们来看下MSDN上关于这些扩展方法的官方描述: First: 返回序列中的第一个元素 . FirstOrDefault: 返回序列中的第一个元素:如果未找到元素,则返回默认值. Last:返回序列的最后一个元素. LastOrDefault: 返回序列中的…
概述 本节主要解说扩展方法,涉及LinQ的详细知识不多. 扩展方法的描写叙述 .net framework为编程人员提供了非常多的类,非常多的方法,可是,不论.net framework在类中为我们提供了多么多的方法,有时候仍然不能满足我们的需求,比如:你想让字符串对象具有ToPascal方法,含义就是将字符串转化为Pascal格式,并返回,我们知道,.net framework提供的String类中并没有为我们提供对应的方法,此时,我们应该怎么做才干够达到我们的目的呢?有人说能够继承Strin…
一:背景 1. 讲故事 前段时间将公司的一个项目从 4.5 升级到了 framework 4.8 ,编码的时候发现 Enumerable 中多了三个扩展方法: Append, Prepend, ToHashSet,想必玩过jquery的朋友一眼就能看出这三个方法的用途,这篇就和大家一起来聊聊这三个方法的底层源码实现,看有没有什么新东西可以挖出来. 二:Enumerable 下的新扩展方法 1. Append 看到这个我的第一印象就是 Add 方法, 可惜在 Enumerable 中并没有类似的方…