最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerable<T>>的方法,坦白的说,就是传入的参数是一个IEnumerable<T>,而不是一个T,这种情景是随时可能用到的.当然我们会轻易的发现List<T>里本身就封装了一个方法public int RemoveAll(Predicate<T> match)…
以时间转换为案例: //声明接口,也是在声明date这个基础类型要定义一个format的扩展方法,不写接口声明会报错 interface Date { Format(fmt:string):string; } //要写到class类的外面,不然会划红线报错 Date.prototype.Format = function (fmt) { //author: meizz var o = { , //月份 "d+": this.getDate(), //日 "H+":…
 什么是类的扩展方法 扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型. MSDN Extension methods enable you to "add" methods to existing types without creating a new derived type, recompiling, or otherwise modifying the original type. Extension methods are a…
LINQ方法实际上是对IEnumerable<TSource>的扩展,如图:   本篇自定义一个MyWhere方法,达到与Where相同的效果.     使用LINQ自带的Where方法 class Program { static void Main(string[] args) { List<int> list = new List<int>(){1, 2, 3}; IEnumerable<int> query = list.Where(x =>…
ASP.NET MVC学前篇之扩展方法.链式编程 前言 目的没有别的,就是介绍几点在ASP.NETMVC 用到C#语言特性,还有一些其他琐碎的知识点,强行的划分一个范围的话,只能说都跟MVC有关,有的是外围的知识,有的是包含在框架内的. MVC学前篇字样?有噱头的成分也有真实的成分,所以工欲善其事,必先利其器.器是什么?基础嘛,虽然说MVC框架中涉及到的知识很多很多也不是我一篇两篇能说完的,我能做的就是知道多少就跟大家分享多少,当然了随着时间的推移会完善这个系列. 1扩展方法 扩展方法是C# 3…
回到目录 对EF开发来说,导航属性肯定都用过,事实上,它是由VS IDE工具根据你的数据库关系结构自动生成的外键属性,在类视图中可以看到相关属性,它是以外键表名来标识的,如果是一对多的关系,那么,它会为属性加上ICollection泛型集合用来标识,而今天我们要说的当然不是自动生成的,而是手动加的属性,这样属性需要我们手动进行join,然后把它按需赋值,而使用include当然是无效的,呵呵. 一般地,我们习惯上把集合属性定义为List<T>,但是,对于linq to entities来说,这…
首先看看继承关系 public abstract class DbSet : DbQuery public abstract class DbQuery : IOrderedQueryable, IQueryable, IEnumerable, IListSource public interface IQueryable<out T> : IEnumerable<T>, IQueryable, IEnumerable 再看这段代码: 定义了Members: public DbSe…
/// <summary>/// IEnumerable接口的扩展方法,支持它的实现类是List的情况/// </summary>using System.Collections.Generic;public static class IEnumerableExtensions{ /// <summary> /// 向集合中添加元素 /// </summary> /// <typeparam name="T"></typ…
比如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未…
由于在MVC中经常会使用到@Html.DropDownList方法,而该方法接收的是List<SelectListItem> 参数,因此就想着写一个扩展方法,直接把IEnumerable转换为List<SelectListItem>类型,这样使用起来会比较方便 正式进入正文. 1.首先创建下面实体: //水果类 public class Fruit { public string Code { get; set; } public string Name { get; set; }…