国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#基礎----Linq之List<T>篇

2019-11-14 16:18:53
字體:
來源:轉載
供稿:網友

  

   最近有用到List處理排序以及分頁的問題.想想還是寫一個博客記錄一下。以下圍繞Person類實現,Person類只有Name和Age兩個屬性

    一.List<T>排序

       1.1 List<T>提供了很多排序方法,sort(),Orderby(),OrderByDescending().

    

lstPerson = lstPerson.OrderByDescending(x=>x.Name).ToList(); //降序lstPerson = lstPerson.OrderBy(x => x.Age).ToList();//升序//通過Name和Age升序lstPerson.Sort((x, y) =>            {                if ((x.Name.CompareTo(y.Name) > 0) || ((x.Name == y.Name) && x.Age > y.Age))                {                    return 1;                }                else if ((x.Name == y.Name) && (x.Age == y.Age))                {                    return 0;                }                else                {                    return -1;                }            });

        1.2 因為最近有做Silverlight的datagrid里面像實現點擊任何一列的名稱就按照該名稱排序,那我們該怎么做呢?可能第一反應是想,為每一個屬性寫一個排序方法不就得了,其實這樣的話無意間增加的代碼量了,而且不通用,其實這里可以結合反射來實現.
    

 string PRopertityName = "Name"; lstPerson = lstPerson.OrderBy(x =>            {                PropertyInfo[] proInfos = x.GetType().GetProperties();                return proInfos.Where(info => info.Name == propertityName).ToList()[0].GetValue(x);            }).ToList();

   二.List<T>分頁

   2.1在Silverlight往往有時候我們會從后臺獲取很多數據,存放在List<T>,可是因為界面受限制無法完全展示,我們就會想到分頁顯示,對于分頁顯示我們基本上第一種想法肯定是通過循環設置每一頁的Size,代碼如下:

        /// <summary>        /// 獲取單頁數據        /// </summary>        /// <param name="lstPerson">數據集合</param>        /// <param name="pageIndex">頁碼(默認從1開始)</param>        /// <param name="PageSize">每一頁的數據行數</param>        /// <returns></returns>        public static List<Person> GetPage(List<Person> lstPerson, int pageIndex, int PageSize)        {            List<Person> pagePerson = new List<Person>();            for (int index = (pageIndex - 1) * PageSize; index < pageIndex * PageSize && index<lstPerson.Count; index++)            {                pagePerson.Add(lstPerson[index]);            }            return pagePerson;        }

          2.2,其實linq有skip和take方法,skip表示跳過多少元素,take獲取特定個數元素. 看起來代碼簡潔多了.

public static List<Person> GetPageByLinq(List<Person> lstPerson, int pageIndex, int PageSize){    return lstPerson.Skip((pageIndex - 1) * PageSize).Take(PageSize).ToList();}

      三,List<T>之foreach用法.

     2.1 如何我相對List里面的每個對象執行相同操作的話,以前都是通過for循環遍歷,其實Linq提供了便捷的Foreach來實現。下面我將對所有的Person年齡+2.

    

lstPerson.ForEach(x => x.Age= x.Age + 2);

 

 

 

  


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安龙县| 手机| 白沙| 葫芦岛市| 莫力| 琼中| 屏山县| 芮城县| 方山县| 高安市| 志丹县| 翼城县| 四川省| 扶绥县| 贡觉县| 怀宁县| 临海市| 宁安市| 莱阳市| 雅江县| 河北区| 惠东县| 吴桥县| 武冈市| 军事| 崇左市| 广丰县| 定结县| 南汇区| 东阿县| 喜德县| 迁安市| 湖州市| 章丘市| 玉门市| 青浦区| 禹城市| 安康市| 扶余县| 临高县| 天祝|