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;
});
