Linq_Lambda GroupBy使用笔记
今天看MVC遇到了GroupBY的Lambda表达式..有兴趣详细的看下去..得此笔记..记录之...
不罗嗦..上代码...
//得到List<GroupEmail>对象 数据源
var groupMail = Xmall.Plugin.Edm.Utility.DataCache.EmailGroup.CacheList();
首先得到一个数据源对象
这个对象是一个邮件分组的数据列表..依据固定的缓存对象得出
分组代码如下
var v2 = groupMail.GroupBy(o => o.Valid == true);
//将得到的数据按照某属性进行分组
上边我们用到的是最最简单的分组..他得到的是一个分组数据对象..类型为 IEnumerable<IGrouping<TKey, TSource>>..可以使用.ToList()方法将其中的数据转换为直接读取的数值来使用
如果有特殊需要..比如..分组之后我还要得到一组数据中对应的每一个数据..
譬如..上边的实例是按照数据的是否验证来分组的..得到两组数据..Ture 或者 Flase
我还想得到为Ture的数据的集合..则可以将上述代码进行改造..
var v2 = groupMail.GroupBy(o => o.Valid == true, (iii, vvv) => new { group = iii, groupMails = vvv });
//将得到的数据按照某属性进行分组
//并将分组后的值按照分组值存入对象
我们依然会得到两条数据..依然可以使用 ToList()转换..
新加的代码 (iii, vvv) => new { group = iii, groupMails = vvv } 中,,每一个变量名称都是自定义的..
iii 代表的我们在前边的分组列得到的值..也就是我们的 True 和 False.. 在后边的 New{} 中..给了自定义字段 group
vvv 代表的我们在该分组内的对应数据.. 在后边给了 groupMails..
这个groupMails我们需要说一下..他是延时加载的..本人在测试的时候..数据量比较小..没有感觉到有什么不同..但是数据大的话..就不知道了..很有可能 在你执行到下一个逻辑代码的时候..他还没有加载完毕
上述的代码得到的结果..在转换为ToList之后...对象是这样的..
V2依然可以转换为一个List对象..但列表里的对象则变成了有两个属性.. group 和 groupMails
group里存储的是分组的类别..True 和Flase..
groupMails对象转换为ToList()之后..存储的是与前边属性group一致的对象的集合..
也就意味着..
一个表里有三个True 两个False的值..
经过这般处理之后..
得到的对象里分成两个对象..
一个group为Ture..groupMails的对象有3个..
另外一个则group为False..groupMails的数量有2个..
var bb = v2.First(o => o.group == true).groupMails.Count();
//bb=3
这对于后边的操作优点就非常显而易见了..
你可以得到任何一个与你操作对象有相同某个属性的数量和实体对象了..
再也不用每一个都去单独查找..方便大大滴...
Linq_Lambda GroupBy使用笔记的更多相关文章
- Pandas之groupby( )用法笔记
groupby官方解释 DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True ...
- CUBRID学习笔记 41 sql语法之groupby 等
cubrid的中sql查询语法groupby GROUP BY ... HAVING Clause 按dept_no分组 SELECT dept_no, avg(sales_amount) FROM ...
- 《笔记》Python itertools的groupby分组数据处理
今天遇到这么一个需求,需要将这样的数据进行分组处理: [(, ), (, ), (, ), (, ), (, ), (, )] 处理之后我可能需要得到这样的结果: [(, (, , (, , (, ) ...
- RxSwift学习笔记7:buffer/window/map/flatMap/flatMapLatest/flatMapFirst/concatMap/scan/groupBy
1.buffer的基本使用 let publishSubject = PublishSubject<String>() //buffer 方法作用是缓冲组合,第一个参数是缓冲时间,第二个参 ...
- itertools.groupby()/itertools.compress() 笔记
关于itertools.groupby() itertools.groupby()就是将相邻的并且相同的键值划分为同一组,相似功能可以看https://docs.python.org/3/librar ...
- 【笔记】DataTable或IList使用GroupBy方法的lamda表达式
DataTable GroupBy的用法 var result = dt.AsEnumerable(). GroupBy(g => new { StaffID = g.Field<stri ...
- python库学习笔记——分组计算利器:pandas中的groupby技术
最近处理数据需要分组计算,又用到了groupby函数,温故而知新. 分组运算的第一阶段,pandas 对象(无论是 Series.DataFrame 还是其他的)中的数据会根据你所提供的一个或多个键被 ...
- Pandas进阶笔记 (一) Groupby 重难点总结
如果Pandas只是能把一些数据变成 dataframe 这样优美的格式,那么Pandas绝不会成为叱咤风云的数据分析中心组件.因为在数据分析过程中,描述数据是通过一些列的统计指标实现的,分析结果也需 ...
- Python数据分析笔记目录
速查笔记 使用实例 Pandas-数据导入 (未完成) Pandas-数据探索 基础属性 shape indexs columns values dtype/dtypes 汇总和计算描述统计 coun ...
随机推荐
- 【收藏】Android更新UI的几种常见方法
----------------将会调用onDraw()重绘控件---------------- 1.view.invalidate刷新UI(主线程) 2.view.postInvalidate刷 ...
- 24 映射-Map
什么是映射(Map) 映射中的每一个元素包含一个键对象和一个值对象,键不可以重复,值可以重复 key1 value1 key2 value2 key3 value3 key4 value4 key5 ...
- js清除浏览器缓存的几种方法
2014年9月24日 4692次浏览 关于浏览器缓存 浏览器缓存,有时候我们需要他,因为他可以提高网站性能和浏览器速度,提高网站性能.但是有时候我们又不得不清除缓存,因为缓存可能误事,出现一些错误的数 ...
- python-generator生成杨辉三角
根据廖雪峰老师的评论区摘录. 1: def triangles(): L = [1] while True: yield L L1 = [0] + L[:] L = [L[i]+L1[i] for i ...
- (转)CSS的Sprites技术
Css Sprites 技术逐渐流行,各大网站上都可以看到它的身影. 但从本质上,Css Sprites 只是 Css 技术的一个使用小窍门,初学者也能快速上手. Css Sprites 简单解释: ...
- Leetcode Perfect Square
这道题首先想到的算法是DP.每个perfect square number对应的解都是1.先生成一个n+1长的DP list.对于每个i,可以用dp[i] = min(dp[j] + dp[i-j], ...
- 【学习笔记&训练记录】数位DP
数位DP,即对数位进行拆分,利用数位来转移的一种DP,一般采用记忆化搜索,或者是先预处理再进行转移 一个比较大略的思想就是可以对于给定的大数,进行按数位进行固定来转移记录答案 区间类型的,可以考虑前缀 ...
- duxcms SQL Injection In /admin/module/loginMod.class.php
目录 . 漏洞描述 . 漏洞触发条件 . 漏洞影响范围 . 漏洞代码分析 . 防御方法 . 攻防思考 1. 漏洞描述 duxcms是一款采用PHP开发,基于HMVC规则开发适合中小企业.公司.新闻.个 ...
- string字符串的一系列操作
IndexOf() 查找字串中指定字符或字串首次出现的位置,返首索引值,如: str1.IndexOf("字"): //查找“字”在str1中的索引值(位置) str1.Index ...
- iOS - 沙盒中,如何判断存在文件、目录
在iOS开发中,在沙盒中创建沙盒一些存储各个功能的文件目录或者文件. 使用: [NSFileManager defaultManager] 1.判断目录,用她可以. 2.判断文件,用她可以. 3.创建 ...