成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C#實戰積累:常用的Lambda表達式整理

開發 前端
"Lambda表達式"屬于一個匿名函數,是一種針對C#編程語言高效的類似于函數式編程的表達式。采用Lambda簡化了匿名委托的使用,可以大大減少開發中需要編寫的代碼量。比如針對一些求和、去重、排序等等可以省去了循環遍歷的寫法,使得代碼變得更加簡潔。

1、什么是lambda表達式

"Lambda表達式"屬于一個匿名函數,是一種針對C#編程語言高效的類似于函數式編程的表達式。采用Lambda簡化了匿名委托的使用,可以大大減少開發中需要編寫的代碼量。比如針對一些求和、去重、排序等等可以省去了循環遍歷的寫法,使得代碼變得更加簡潔。

2、lambda表達式寫法

訪問修飾符 修飾符 返回值類型 方法名(參數列表) => 表達式;

public static int Add(int a, int b) => a + b;

3、Lambda的本質

Lambda的本質就是方法匿名方法。

通過lambda表達式可以訪問lambda表達式塊外的變量,這稱為閉包。

int lamValue = 10;
Func<int,int> sum = x => x+lamValue;

當外部變量的值變動時,也會影響sum的結果,不建議這樣寫。

4、lambda內部實現過程

編譯器會創建一個匿名類,它有一個構造函數來傳遞外部變量。

public class AnonymousClass{
  public int lamValue;
  public AnonymousClass(int lamValue){
    this.lamValue = lamValue;
  }
  public int AnonymousMethod(int x) => x+lamValue;
}

5、案例

5.1 新建goods.cs 實體類

using System;

namespace Study
{
[Serializable]
public class Goods
{
/// <summary>
/// 商品名稱
/// </summary>
public string Name { get; set; }
/// <summary>
/// 商品分類名稱
/// </summary>
public string CategoryName { get; set; }
/// <summary>
/// 商品編碼
/// </summary>
public string Code { get; set; }
/// <summary>
/// 商品單價
/// </summary>
public double Price { get; set; }
/// <summary>
/// 商品數量
/// </summary>
public int Count { get; set; }

}
}

5.2、測試Demo

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Study
{
class Program
{
static void Main(string[] args)
{
var list = new List<Goods>();
list.Add(new Goods
{
Name = "小米12",
CategoryName = "手機",
Price = 3500.00,
Code = "001",
Count = 10
});
list.Add(new Goods
{
Name = "聯想T50",
CategoryName = "筆記本",
Price = 8800.00,
Code = "002",
Count = 25
});
list.Add(new Goods
{
Name = "雷柏鍵鼠套裝",
CategoryName = "數碼",
Price = 688.00,
Code = "003",
Count = 60
});
list.Add(new Goods
{
Name = "華為藍牙耳機",
CategoryName = "數碼",
Price = 998.00,
Code = "004",
Count =7
});
// 篩選分類是數碼的數據
var list1 = list.Where(m => m.CategoryName == "數碼").ToList();
// 篩選分類是數碼或者手機的記錄
var list2 = list.Where(m => m.CategoryName == "數碼" || m.CategoryName=="手機").ToList();
// 按照價格升序排序
var list3 = list.OrderBy(m => m.Price).ToList();
// 按照價格降序
var list4 = list.OrderByDescending(m => m.Price).ToList();
// 按照分類進行分組只展示分類名稱
var list5 = list.GroupBy(m => m.CategoryName).ToList();
// 查詢分類是數碼的商品的總數量
var list6 = list.Where(m=>m.CategoryName=="數碼").Sum(m => m.Count);
// 查詢商品名稱包含機這個關鍵字的平均價格
var list7 = list.Where(m => m.Name.Contains("機")).Average(m => m.Price);
// 根據分類進行分組 獲取分類名、總數量、平均單價
var list8 = list.GroupBy(m => m.CategoryName).Select(n => new Goods
{
CategoryName=n.FirstOrDefault().CategoryName,
Price=n.Average(s=>s.Price),
Count = n.Sum(s => s.Count)
});
// 獲取當前列表的前兩行記錄
var list9 = list.Take(2).ToList();
// 獲取后兩行數據
var list10 = list.TakeLast(2).ToList();
// 針對列表內存形式的分頁 跳過第一條記錄,往后查詢兩條
var list11 = list.Skip(1).Take(2).ToList();

// 針對整個列表所有屬性比對去重
var list12 = list.Distinct().ToList();
// 根據分類名稱去重
var list13 = list.Select(m => m.CategoryName).Distinct().ToList();
// 逗號拼接字符串 針對數值類型字段的拼接 獲取前端字符串展示
var json1 = string.Join(',', list.Select(m => m.Code));
// 逗號加'' 單引號拼接字符串主要是用來數據庫字段不為數值類型的 in 查詢sql拼接
var json2 = string.Join("','", list.Select(m => m.Name));
Console.WriteLine(json1);
Console.WriteLine("逆序之前");
foreach (var item in list)
{
Console.WriteLine(JsonConvert.SerializeObject(item));
}
// list 逆序操作
list.Reverse();
Console.WriteLine("逆序之后");
foreach (var item in list)
{ Console.WriteLine(JsonConvert.SerializeObject(item));
}

Console.WriteLine("Hello World!");
}
}
}
責任編輯:武曉燕 來源: IT技術分享社區
相關推薦

2009-08-27 09:44:59

C# Lambda表達

2009-08-27 09:57:50

C# Lambda表達

2009-08-26 16:17:23

C# Lambda表達

2009-07-09 09:51:07

Lambda表達式C#

2024-03-25 13:46:12

C#Lambda編程

2021-08-31 07:19:41

Lambda表達式C#

2009-09-14 13:57:20

C# Lambda表達Lambda表達式

2010-10-19 10:03:02

Lambda表達式

2010-09-14 14:05:42

C#委托

2011-05-20 17:50:45

C#

2020-10-16 06:40:25

C++匿名函數

2009-08-07 15:41:39

C#正規表達式

2012-06-26 10:03:58

JavaJava 8lambda

2022-09-19 14:12:27

C++Lambda表達式

2009-07-01 09:56:10

C#3.0

2023-11-02 08:25:58

C++Lambda

2009-09-11 09:48:27

Linq Lambda

2009-09-09 13:01:33

LINQ Lambda

2009-09-15 15:18:00

Linq Lambda

2022-12-05 09:31:51

接口lambda表達式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品综合视频 | 国产一区二区在线免费播放 | 国产在线1 | 欧美日韩精品综合 | 久久久久久av | 日韩网站在线观看 | 久久精品亚洲国产奇米99 | 黄色毛片免费看 | 亚洲在线一区二区 | 亚洲自拍偷拍欧美 | 久操福利| 国产高清一区二区三区 | 偷拍第一页| 青青久久 | 久久久www成人免费无遮挡大片 | 久久鲁视频| 欧美极品在线视频 | 亚洲国产aⅴ成人精品无吗 综合国产在线 | 999久久久久久久久6666 | 久草在线中文888 | 一区二区三区四区av | 在线免费视频一区 | 成人日批视频 | 国产亚洲一区二区精品 | 成人h视频| 亚洲视频精品 | 亚洲成av片人久久久 | 国产精品久久久久久久岛一牛影视 | 精品视频一区二区三区 | 亚洲免费精品 | 日日做夜夜爽毛片麻豆 | 国产电影一区 | 国产精品亚洲视频 | 看片91| 国产激情精品视频 | 久久久蜜臀国产一区二区 | 免费高潮视频95在线观看网站 | 国产99久久精品一区二区永久免费 | 日日爱视频 | 国产视频黄色 | 国产精品色综合 |