【Basic Code】对List进行筛选的几种方法
来源:互联网 发布:在淘宝网上怎么买东西 编辑:程序博客网 时间:2024/06/05 02:33
前提:
在项目中MVVM模式在前台View是直接和ViewModel当中的对象进行绑定,所以后台逻辑更多的将需要的数据以List的形式传递给ViewModel,期间大量的对List的筛选操作,做如下总结。
一、单值作为筛选条件,筛选集合:
1.where限定
var item = Mysql.From<D.Talbe>().Where(a => a.property == 值).ToFirst()/ToList().
2.Find限定
int realid = realaccount.Find(a => a.Status == 0).Id;FindAll, FindIndex, FindLast……
3.Exist限定
//详情去实例化一个集合,按F12熟练其属性用法,了解其区别
二、集合作为筛选条件,筛选集合:
1.循环方法:
if (!string.IsNullOrEmpty(PayREQ.CardNum)){ List<D.LeaguerEvent> cancelInfo = new List<D.LeaguerEvent>(); var card = GetCardInfo(PayREQ.CardNum); if (card == null) return cancelCardNull; var leaginfos = MySql.From<D.LeaguerCard>().Where(a => a.CardId == card.Id).ToList(); //以leaginfos集合作为筛选条件 foreach (var l in leaginfos) { //list中通过LeaguerId进行匹配 cancelInfo.AddRange(list.Where(b => b.LeaguerId == l.Id).ToList()); } list.Clear(); list = cancelInfo;}理解:
(1)在进行if判断之前已经有一个list结果集,如果传入pay.REQ不为null或者空,以查询出的leaginfos做筛选条件。
(2)foreach循环中,通过对list筛选后,结果传入一个新的cancelInfo当中,foreach外面清空list,将cancelInfo赋值给list,最后统一返回。
2.Contains反包含
var leaguerId = from fn in leag select fn.Id;List<int> id = leaguerId.ToList(); //直接以list作为条件,进行筛选var consumelistSelect = consumelist.Where(p => id.Contains(p.ChildCardId)).ToList(); consumelist.Clear(); consumelist = consumelistSelect;理解:
(1)先拿到作为筛选条件的List集合,并转换类型为将要被筛选的List里对应字段的数据类型。
(2)关键代码处:(p => id.Contains(p.ChildCardId)).ToList(); 切记,这种反包含的写法,是筛选条件写到外面,被筛选的集合放到括号里,这种写法也是和郑浩请教的远洋地产公司的写法,很便捷。
对比:
(1)前者适用于数据量小的地方,通过foreach循环,出异常的几率更小,因为在项目中使用反包含写法报了几次Bug,但是前者没有,(也有可能是上下界的问题)。
(2)速度上后者更优,数据量上万条,择优选择后者。
0 0
- 【Basic Code】对List进行筛选的几种方法
- 筛选素数的几种方法
- 对DataTable进行过滤筛选的一些方法Select,dataview
- 对List数组进行排序的三种方法
- 对hadoop task进行profiling的几种方法整理
- 对hadoop task进行profiling的几种方法整理
- 对List进行排序的方法
- 对数组进行筛选
- 三种对list排序的方法,并实现动态传递字段名对list进行排序
- 对jquery ajax的返回值进行过滤筛选的方法
- Visual Basic.Net连各种数据库的几种方法
- Visual Basic.Net连各种数据库的几种方法
- Visual Basic.Net连各种数据库的几种方法
- Visual Basic.Net连各种数据库的几种方法
- Visual Basic应用程序的几种打印方法
- Java-Collections的sort方法对list进行排序
- Java-Collections的sort方法对 list 进行排序
- C#对list列表进行随机排序的方法
- 两种通用链表(Linux 内核链表)
- 数字电路中的建立时间与保持时间是什么
- 2602--0-1背包
- Java中类的构造方法
- spring+struts2+hibernate的学习笔记
- 【Basic Code】对List进行筛选的几种方法
- linux笔记-文件查找详解
- mysql表锁、行锁和页锁的解析
- 我来啦
- 数据结构看书笔记(四)--栈与队列
- PAT_A 1101. Quick Sort (25)
- linux笔记-特殊权限SUID等详解
- html笔记
- android memory optimised