List<>各函數的用法--完善中


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM