LambdaHelper


public class LambdaHelper
 {
     /*
      * ●from子句:指定查詢操作的數據源和範圍變量。
      *
      * ●select子句:指定查詢結果的類型和表現形式。
      *
      * ●where子句:指定篩選元素的邏輯條件。
      *
      * ●let子句:引入用來臨時保存查詢表達式中的字表達式結果的範圍變量。
      *
      * ●orderby子句:對查詢結果進行排序操作,包括升序和降序。
      *
      * ●group子句:對查詢結果進行分組。
      *
      * ●into子句:提供一個臨時標識符。join子句、group子句或select子句可以通過該標識符引用查詢操作中的中堅結果。
      *
      * ●join子句:連接多個用於查詢操作的數據源
      */

     /// <summary>
     /// 獲取List
     /// </summary>
     /// <returns></returns>
     public List<UsersModel> GetUsersList()
     {
         List<UsersModel> list = new List<UsersModel>();
         return list;
     }

     #region 拉姆達表達式實現Sum、Min、Max操作

     #region GetIntSum 對GetIntSum類型進行求和
     /// <summary>
     ///GetIntSum  求和int
     /// </summary>
     /// <returns></returns>
     public int GetIntSum()
     {
         List<UsersModel> usersModels = new List<UsersModel>();
         //獲取sum的合計數據
         int sumNum = usersModels.Where(cp => cp.UpdateUser > 0).Sum(cp => cp.UpdateUser);

         //獲取最大值
         var maxNum = usersModels.Max(cp => cp.UpdateUser);

         //獲取最小值
         var minNum = usersModels.Min(cp => cp.UpdateUser);

         //查詢最大的一條數據
         usersModels.OrderByDescending(cp => cp.UserID).FirstOrDefault();
         return maxNum;
     }
     #endregion

     #region GetDoubleSum 對Double類型進行求和
     /// <summary>
     /// 對doubel類型進行求和
     /// </summary>
     /// <returns></returns>
     public void GetDoubleSum()
     {
         List<UsersModel> usersModels = new List<UsersModel>();

         //獲取doubleSum的合計數據
         double doubleSum = usersModels.Where(cp => cp.DoubleMoney > 0).Sum(cp => cp.DoubleMoney);

         //獲取最大值
         double maxNum = usersModels.Max(cp => cp.DoubleMoney);

         //獲取最小值
         double minNum = usersModels.Min(cp => cp.DoubleMoney);
     }

     #endregion

     #region GetDecimalSum 對Decimal類型進行求和
     /// <summary>
     /// 對Decimal類型進行求和
     /// </summary>
     public void GetDecimalSum()
     {
         List<UsersModel> usersModels = new List<UsersModel>();

         //獲取doubleSum的合計數據
         decimal doubleSum = usersModels.Where(cp => cp.Money > 0).Sum(cp => cp.Money);

         //獲取最大值
         decimal maxNum = usersModels.Max(cp => cp.Money);

         //獲取最小值
         decimal minNum = usersModels.Min(cp => cp.Money);

     }
     #endregion

     #endregion

     #region 拉姆達表達式實現forEash循環
     /// <summary>
     /// 拉姆達表達式實現for循環
     /// </summary>
     public void ForEachToLambda()
     {
         var usersModels = GetUsersList();
         usersModels.ForEach(a =>
         {
             if (a.UpdateUser > 20)
             {
                 //這裏繼續調用某一個方法
                 Console.WriteLine(a.UpdateUser);
             }
         });
     }
     #endregion

     #region 拉姆達表達式實現where篩選
     /// <summary>
     /// 條件篩選 where
     /// </summary>
     public void ConditionScreen()
     {
         var usersModels = GetUsersList();
         // 條件篩選 where單個
         var model = usersModels.Where(cp => cp.UpdateTime > DateTime.Now).FirstOrDefault();
         // 條件篩選 whereList
         var usersList = usersModels.Where(cp => cp.UpdateTime > DateTime.Now && cp.UpdateUser > 0);
         //升序
         var listAsc = usersModels.OrderBy(cp => cp.UpdateTime).ToList();
         //降序
         var listDes = usersModels.OrderByDescending(cp => cp.UpdateTime).ToList();
         //包含p.Name.Contains
         var containsList = usersModels.Select(cp => cp.UserName.Contains("demo")).ToList();
     }
     #endregion

     #region 拉姆達表達式實現GroupBy篩選
     /// <summary>
     /// 對list進行分組
     /// </summary>
     public void GroupByList()
     {
         var usersModels = GetUsersList();

         //單一:根據用戶進行分組
         var dic = usersModels.GroupBy(a => a.CreateUser);

         foreach (var item in dic)
         {
             Console.WriteLine(item.Key);
             foreach (var sub in item)
             {
                 Console.WriteLine("\t\t" + sub.UpdateTime + " " + sub.UpdateUser);
             }
         }
         //
         var dic2 = usersModels.GroupBy(a => a.CreateUser, a => a.CreateTime).ToList();

         //多個條件進行分組GroupBy
         var group = usersModels.GroupBy(x => new { x.CreateTime, x.UpdateUser, x.UserID, x.UserName }).ToList();
     }
     #endregion

     #region 拉姆達表達式實現Select操作
     /// <summary>
     /// 拉姆達表達式實現Select操作
     /// </summary>
     public void LambdaBySelectList()
     {
         var list = GetUsersList();
         //1.獲取userNameList
         List<string> userNameList = list.Select(cp => cp.UserName).ToList();
         //2.獲取userNameList 中第一條條數據
         string str = list.Select(cp => cp.UserName).FirstOrDefault();
         //3.獲取滿足條件的第一條記錄
         UsersModel usersModel = list.Where(cp => cp.UserName== "Manager"&& cp.UserID>0).FirstOrDefault();

         //4.Skip 排序後獲取List中的前10條記錄
         List<UsersModel> skipList= list.Skip(10).ToList();

         //5.獲取List某一字段的平均值
         var averNum = list.Average(cp => cp.UserID);

     }

     #endregion

     #region linq 表達式的使用
     /// <summary>
     /// linq 表達式的使用
     /// </summary>
     public void GetLinq()
     {
         int[] arr = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
         var query2 = from n in arr
                      where n > 6
                      select n;

         List<UsersModel> usersModels = new List<UsersModel>();
         var selectUserList = from user in usersModels where user.IsValid > 0 select user;
     }
     #endregion

 }
 ~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章