List扩展方法汇总(仅备注)
不管在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扩展方法汇总(仅备注)的更多相关文章
- (扩展根目录容量方法汇总)把Linux系统迁移到另一个分区或者硬盘
Linux系统扩容方法汇总 相信很多朋友都有过这样的经历,本想装个Ubantu玩玩,没想到玩久了反而不习惯Windows了,然而开始装系统的时候只分配了非常小的空间,那应该怎样扩展我们的ubantu呢 ...
- 微擎系统BUG漏洞解决方法汇总(原创)
微擎微赞系统BUG漏洞解决方法汇总 弄了微擎系统来玩玩,发觉这个系统BUG还不少,阿里云的提醒都一大堆,主要是没有针对SQL注入做预防,处理的办法基本都是用转义函数. 汇总: 1. 漏洞名称: 微擎任 ...
- 微擎系统BUG漏洞解决方法汇总
微擎微赞系统BUG漏洞解决方法汇总 弄了微擎系统来玩玩,发觉这个系统BUG还不少,阿里云的提醒都一大堆,主要是没有针对SQL注入做预防,处理的办法基本都是用转义函数. 汇总: 1. 漏洞名称: 微擎任 ...
- 为IEnumerable<T>添加RemoveAll<IEnumerable<T>>扩展方法--高性能篇
最近写代码,遇到一个问题,微软基于List<T>自带的方法是public bool Remove(T item);,可是有时候我们可能会用到诸如RemoveAll<IEnumerab ...
- 扩展方法(C#)
扩展方法使你能够向现有类型“添加”方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 下面的示例为String添加 ...
- 【开源】OSharp框架解说系列(3):扩展方法
OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...
- .NET 扩展方法 (一)
我还记得刚刚学编程的时候,老师经常会提到一句话:注意空指针.所以经常在某些“入口”位置,进行代码校验,空指针的判断就是其中的一项工作. string类型作为常用的数据类型,它在项目中出现的机率极高,所 ...
- C# 扩展方法集
语法注意点 可以使用扩展方法来扩展类或接口. 不能重写扩展方法. 扩展方法只能在非嵌套.非泛型静态类内部定义. 扩展方法必须定义在静态类中. 扩展方法的第一个参数的类型用于指定被扩展的类型,它限制该扩 ...
- .NET 扩展方法(Extention Method)的要点
扩展方法Extention Method的主要介绍在:http://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.100).aspx. 扩展方法的意义在 ...
随机推荐
- LeetCode OJ:Permutations II(排列II)
Given a collection of numbers that might contain duplicates, return all possible unique permutations ...
- PostgreSQL 全文检索
PostgreSQL 8.3.1 全文检索(转) 在postgreSQL 8.3自带支持全文检索功能,在之前的版本中需要安装配置tsearch2才能使用,安转配置tsearch2就不再多说了,主要介 ...
- 【SQL查询】按照多个字段进行排序_order by
注: 1. 当前面的排序存在重复的项,后面的排序才会起作用. [示例1]:前面的排序不存在重复的项 [示例2]:前面的排序存在重复的项
- bat中for /f 如何截取任意行
一.概述 for命令开关有很多,/L,/F,/R.这里仅对含有/F的for进行分析,这个可能是最常用的,也是最强的命令,主要用来处理文件和一些命令的输出结果. 1.命令格式:(1).FOR /F [& ...
- 专业工具软件AutoCAD复习资料
专业工具软件AutoCAD复习资料 下载地址:http://download.csdn.net/detail/zhangrelay/9849503 这里给出了一些dwg格式的CAD资料,用于课后学习和 ...
- Android 仿淘宝属性标签页
直接看效果图相信这样的效果很多,我之前在网上找了很久没找到自己想要的! <?xml version="1.0" encoding="utf-8"?> ...
- Leetcode 1020. Number of Enclaves
dfs或者bfs class Solution: def dfs(self, A, rows, cols, i, j): if not (0 <= i < rows and 0 <= ...
- c printf打印格式
关于小数点位数的举例: <pre lang="c" escaped="true">#include <stdio.h> /* 当fah ...
- 关于altera的fft核使用问题记录
altera的fft核使用比较特别,今天我做了一下仿真,发现一些问题,现做记录如下: 1,ip配置 parameters选项卡主要是fft变换的长度和数据长度,旋转因子长度,需要注意的是“Twiddl ...
- LG3195 [HNOI2008]玩具装箱TOY
题意 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为\(1\cdots N\) ...