不管在c/s还是b/s的c#语言开发程序中,经常会用到List的扩展方法,尤其在json格式的数据和服务端交互越来越流行,很多时候总是在开发使用到的时候才去搜索有些扩展方法或者linq的用法,在这里,我们只是做一个备注

因为linq没有必要系统的学习,我们只要简单的在list的扩展会使用即可,至少我只这么认为的

本文没有任何技术性,只是备注list或者list泛型的扩展方法,不至于在您不熟悉但是又使用到的时候到处搜索

  public sealed class Employee
{
public string Name { get; set; }
public double Salary { get; set; }
public short Dependents { get; set; }
}
public class Test
{
public void FunTest()
{
var employees = new List<Employee>
{
new Employee { Name = "Bob", Salary = , Dependents = },
new Employee { Name = "Sherry", Salary = , Dependents = },
new Employee { Name = "Kathy", Salary = , Dependents = },
new Employee { Name = "Joe", Salary = , Dependents = },
new Employee { Name = "Bob", Salary = , Dependents = },
new Employee { Name = "Bob", Salary = , Dependents = }
};
//泛型方法的类型参数是可以省略的 //所有求和
double sumSalary = employees.Sum<Employee>(e => e.Salary);//21.0
//【linq方式】所有求和
var sumSalary2 = (from v in employees select v).Sum(e => e.Salary);//21.0 //按照某一条件求和
double sumSalaryFilter = employees.Where<Employee>(e => e.Name == "Bob").ToList().Sum(e => e.Salary);//12.0
//【linq方式】按照某一条件求和
var sumSalaryFilter2 = (from v in employees where v.Name == "Bob" select v).Sum(e => e.Salary);//12.0

//选择数据而已,即返回自定义改变后的新的投影的数据列表(无法改变源数据)
var selectChangedNameList = employees.Select<Employee, Employee>(e => { return new Employee { Name = "Bob" }; }).ToList();
//【linq方式】选择数据而已,即返回自定义改变后的新的投影的数据列表(无法改变源数据)
var selectChangedNameList2 = (from v in employees select new { Name = "Bob", Salary = v.Salary, Dependents = v.Dependents }).ToList();
//选择返回某一列的清单投影的数据列表
var selectSalaryList = employees.Select<Employee, double>(e => { return e.Salary; }).ToList();

//查找符合条件的第一个元素
Employee employee1 = employees.Find(e => e.Name == "Bob");
//【linq方式】查找符合条件的第一个元素
Employee employee2 = (from v in employees where v.Name == "Bob" select v).First();
//不用lambda方式筛选符合条件的元素列表
Predicate<Employee> aaaa = new Predicate<Employee>(fun1);
List<Employee> employee1List = employees.FindAll(aaaa);
//lambda方式筛选符合条件的元素列表
List<Employee> employee2List = employees.FindAll(e => e.Name == "Bob");
//【linq方式】方式筛选符合条件的元素列表
List<Employee> employee2List2 = (from v in employees where v.Name == "Bob" select v).ToList(); //max,min,平均值,筛选满足某条件的max和min已经使用linq方式
employees.Max(e => e.Salary);
employees.Min(e => e.Salary);
(from v in employees select v).Max(e => e.Salary);
(from v in employees select v).Min(e => e.Salary);
double maxSalaryFilter = employees.Where<Employee>(e => e.Name == "Bob").ToList().Max(e => e.Salary);
//简单的运算,比如列表总的相加的值
var aggregateEmployee = employees.Aggregate<Employee>((result, next) => new Employee { Salary = result.Salary + next.Salary }); //某一列的不重复的汇总
var groupEmployees = employees.GroupBy(e => new { e.Name }).Select(g => new { g.Key, Count = g.Count() }).ToList();
var groupEmployees1 = employees.GroupBy(e => e.Name).Select(e => new { Name = e.Key, sumSalary = e.Sum(d => d.Salary) }).ToList();
var groupEmployees2 = (from v in employees group v by v.Name into g select new { Name = g.Key, SumSalary = g.Sum(d => d.Salary) }).ToList(); //查询满足某一条件的所有数据
IEnumerable<Employee> employee3List = employees.Where<Employee>(e => e.Name == "Bob");
List<Employee> employee4List = employees.Where<Employee>(e => e.Name == "Bob").ToList();
employee3List = employee4List as IEnumerable<Employee>; Console.WriteLine("adfadsfasdfasdf");
} private bool fun1(Employee e)
{
return (e.Name == "Bob");
}
}

List扩展方法汇总(仅备注)的更多相关文章

  1. (扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘

    Linux系统扩容方法汇总 相信很多朋友都有过这样的经历,本想装个Ubantu玩玩,没想到玩久了反而不习惯Windows了,然而开始装系统的时候只分配了非常小的空间,那应该怎样扩展我们的ubantu呢 ...

  2. 微擎系统BUG漏洞解决方法汇总(原创)

    微擎微赞系统BUG漏洞解决方法汇总 弄了微擎系统来玩玩,发觉这个系统BUG还不少,阿里云的提醒都一大堆,主要是没有针对SQL注入做预防,处理的办法基本都是用转义函数. 汇总: 1. 漏洞名称: 微擎任 ...

  3. 微擎系统BUG漏洞解决方法汇总

    微擎微赞系统BUG漏洞解决方法汇总 弄了微擎系统来玩玩,发觉这个系统BUG还不少,阿里云的提醒都一大堆,主要是没有针对SQL注入做预防,处理的办法基本都是用转义函数. 汇总: 1. 漏洞名称: 微擎任 ...

  4. 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇

    最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...

  5. 扩展方法(C#)

    扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 下面的示例为String添加 ...

  6. 【开源】OSharp框架解说系列(3):扩展方法

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  7. .NET 扩展方法 (一)

    我还记得刚刚学编程的时候,老师经常会提到一句话:注意空指针.所以经常在某些“入口”位置,进行代码校验,空指针的判断就是其中的一项工作. string类型作为常用的数据类型,它在项目中出现的机率极高,所 ...

  8. C# 扩展方法集

    语法注意点 可以使用扩展方法来扩展类或接口. 不能重写扩展方法. 扩展方法只能在非嵌套.非泛型静态类内部定义. 扩展方法必须定义在静态类中. 扩展方法的第一个参数的类型用于指定被扩展的类型,它限制该扩 ...

  9. .NET 扩展方法(Extention Method)的要点

    扩展方法Extention Method的主要介绍在:http://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.100).aspx. 扩展方法的意义在 ...

随机推荐

  1. UIView常用属性与方法/UIKit继承结构

    UIView常用属性与方法 @interface UIView : UIResponder<NSCoding, UIAppearance, UIAppearanceContainer, UIDy ...

  2. request.setAttribute("username", username);//一定要保存,OGNL才能获取${username}

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, ...

  3. 【python】命令行解析工具argparse用法

    python的命令行参数 之前有用到optget, optparse, 现在这些都被弃用了. import argparse parser = argparse.ArgumentParser() ar ...

  4. http keep - alive 与 长连接

    http1.0 2.0 1.1区别 你可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的 ...

  5. Golang使用MongoDB通用操作

    MongoDB是Nosql中常用的一种数据库,今天笔者就简单总结一下Golang如何使用这些通用的供能的,不喜勿喷... 研究的事例结构如下: type LikeBest struct { Autho ...

  6. eclipse javaw.exe in your current path问题

    问题: 第一次运行eclipse的时候,可能会提醒找不到javaw.exe ******等的问题 很坑的! 解决方案: 无法启动Eclipe,因找不到javaw.exe 还是环境变量的问题!!! 注意 ...

  7. POJ 2954 Triangle (pick 定理)

    题目大意:给出三个点的坐标,问在这三个点坐标里面的整数坐标点有多少个(不包含边上的) 匹克定理:I = (A-E) / 2 + 1; A: 表示多边形面积 I : 表示多边形内部的点的个数 E: 表示 ...

  8. LeetCode 366. Find Leaves of Binary Tree

    原题链接在这里:https://leetcode.com/problems/find-leaves-of-binary-tree/#/description 题目: Given a binary tr ...

  9. Git克隆、修改、更新项目,及查看项目地址命令

    第一步:在本地新建一个文件夹,作为本地仓库,如“texzt”,直接打开该文件夹,并单击右键,选择git bash here 则可以直接进入到该文件夹目录下. 第二步:将本地仓库初始化,命令:git i ...

  10. 监听文本框输入oninput和onpropertychange事件

    前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onkeydow ...