List<Model> list = 获取的集合数据;
这里的Model表示实体对象,在项目中List经常用来存储 将集合按照指定的键分组,如SQL语句中Group By 字段1,....;这里只能指定一个键,如果要按多个键分组,可以重复以下步骤IEnumerable<IGrouping<string, Model>> groups = list.GroupBy(ins => ins.Field, ins => ins);IGrouping<键的类型,对象类型>:list集合中的对象类型为Model,按Field分组,Field的类型为string.查询出list集合中符合条件的数据IEnumerable<Model> obj = list.Where(ins => "预想值".Equlas(ins.Field1) && ins.Field2 < DateTime.Now);ins:表示list中的每一个对象变量,等同于foreach(Model ins in list)如果想要像sql语句一样能模糊查询[like '%...%']也可以实现Where(model=>model.Field.IndexOf(condition)>=0);//=like '%...%';Where(model=>model.Field.StartsWith(condition)>=0);//=like '...%';Where(model=>model.Field.EndWith(condition)>=0);//=like '%...';在用List<Model>缓存数据的时候很有用处list.OrderBy(ins=>ins.Field).ToList()
将list中的元素按Field键升序排列;如果要降序,可以list.OrderByDescending(ins=>ins.Field).ToList()eg:标题1 | 标题2 | 标题3 |
aaa1 | bbb1 | ccc2 |
aaa2 | bbb2 | ccc1 |
点击表头中的任何一列{标题1,标题2,标题3}时,自动按此列排序,如:点"标题1"列,则按标题排序
list.OrderBy(ins=>ins.GetType().GetProperty(order).GetValue(ins, null));order:点击的列名,区分大小写,与实体的属性名称要完全相同list.OrderBy(ins=>ins.GetType().GetProperty(order, System.Reflection.BindingFlags.IgnoreCase).GetValue(ins, null));这种方式为什么不能用呢?System.Reflection.BindingFlags.IgnoreCase这个不是指示忽略order大小写的吗?
计算集合中某属性值的总和
list.Sum(ins=>ins.Field);
List在2.0的用法不一样,因为不支持Lambda表达式.可以用委托
list.Find( delegate ( object entity){ //判断条件,true:表示找到了.不找了,false:表示未找到.接着找 return entity == null ; }); |
二、查询
放入list中 contains
- 追问
-
可以给点测试代码么 我搞不懂 就像SQL where name like "a%";所查询出来的一样的道理
- 回答
-
其实是linq。。 string aa = "ab"; string bb = "acvb"; string cc = "vbas"; List
list = new List (); list.Add(aa); list.Add(bb); list.Add(cc); List listresult = (list.Where(p => p.Contains("c"))).ToList ();
- 追问
-
List
listresult = (list.Where(p => p.Contains("c"))).ToList ();这句话是什么意思 p.Contains("c")指的是like "c%":