Linq To Object——三種委託
- Predicate\
泛型委託用來定義一組條件並確定指定物件是否符合這些條件的方法,其語如下:
Public delegate bool Predicate\
引數說明:
T:要比較的物件型別
Obj:要按照由此委託表示的方法中定義的條件進行比較的物件。
返回值:如果符合此委託表示的方法中定義的條件,則為true,否則為false
- Action\
泛型委託用來封裝一個方法,該方法只採用一個引數並且不返回值,其語法如下:public delegate void Action\ (T obj)
引數說明
T:委託封裝的方法的引數型別。
Obj:委託封裝的方法的引數
- Func\
泛型委託封裝一個具有一個引數並返回 TResult 引數指定的型別值的方法。,其語法格式如下:
public delegate TResult Func\
T:此委託封裝的方法的引數型別。
TResult: 此委託封裝的方法的返回值型別。
返回結果: 此委託封裝的方法的返回值。例1:查詢指定的字串。
//宣告一個數組並初始化
string[] strLists = new string[] { "明日科技", "C#程式設計詞典", "C#範例大全" };
Console.WriteLine("源字串陣列:");
//使用foreach語句遍歷輸出
foreach (string str in strLists)
{
Console.Write(str + " ");
}
Console.WriteLine("\n");
// 第一種寫法 使用Lambda表示式查詢陣列中包含“C#”的字串
string[] strList = Array.FindAll(strLists, s => (s.IndexOf("C#") >= 0));
//第二種寫法 使用匿名方法的方式
string[] strList = Array.FindAll(strLists, (s) => { return s.IndexOf("C#") >= 0; });
Console.WriteLine("查詢到的包含“C#”的字串:");
//使用foreach語句遍歷輸出
foreach (string str in strList)
{
Console.Write(str + " ");
}
輸出結果:
源字串陣列:
明日科技 C#程式設計詞典 C#範例大全
查詢到的包含“C#”的字串:
C#程式設計詞典 C#範例大全
- 例2:Lambda表示式查詢List列表,使用Predicate委託查詢年齡大於30的員工。
class Program
{
static void Main(string[] args)
{
new Program().PredicateDelegate();//呼叫自定義方法顯示資訊
}
public void PredicateDelegate()
{
List\
//為泛型集合賦值
P_List_user.Add(new User() { Name = "小劉", Age = 33, Pay = 5000 });
P_List_user.Add(new User() { Name = "小王", Age = 30, Pay = 5000 });
P_List_user.Add(new User() { Name = "小趙", Age = 32, Pay = 5000 });
P_List_user.Add(new User() { Name = "小呂", Age = 30, Pay = 5000 });
P_List_user.Add(new User() { Name = "小房", Age = 31, Pay = 5000 });
string P_Str = string.Empty;//定義一個字串變數,用來記錄輸出資訊
//第一種實現方式:匿名方法
List\
(pp) =>//定義匿名方法
{
return pp.Age > 30;//指定查詢條件
});
//第二種實現方式:Lambda表示式,Predicate委託實現
List\
//第一種實現方式:定義匿名方法
P_List_temp.ForEach(//遍歷查詢結果
(pp) => {
//記錄查詢到的資訊
P_Str += "姓名:" + pp.Name + " 年齡:" +pp.Age.ToString() + Environment.NewLine;
});
//第二種方式:Lambda表示式
P_List_temp.ForEach(pp=>Console.WriteLine(pp.Name));
Console.WriteLine(P_Str);//輸出資訊
Console.ReadLine();
}
class User
{
public string Name { get; set; }//自動實現名稱屬性
public int Age { get; set; }//自動實現年齡屬性
public double Pay { get; set; }//自動實現薪資屬性
public override string ToString()
{
return string.Format(
| 同理計算員工工資的總和:Double pay=P_List_user.Sum((pp)=>{return pp.Pay;}); | | --------------------------------------------------------------- |
"姓名:{0} 年齡:{1} 工資:{2}", Name, Age, Pay);//對資訊進行格式化
}
}
}
- YoloV5實戰:手把手教物體檢測——YoloV5
- 基於阿里Semantatic Human Matting演算法,實現精細化人物摳圖
- PPv3-OCR自定義資料從訓練到部署
- 如何下載pytorch的歷史版本?
- WinForm——Button總結
- WinForm——MDI窗體
- 升級 pip
- 將8位的tif圖片改為png圖片
- RepLKNet實戰:使用RepLKNet實現對植物幼苗的分類(非官方)(二)
- 關於OpenCV imread和imdecode讀取圖片是BGR的證明
- opencv讀取圖片通道以及顯示
- 萬字整理聯邦學習系統架構設計參考
- 編譯器堆空間不足
- 【影象分類】實戰——使用EfficientNetV2實現影象分類(Pytorch)
- MMDetection實戰:MMDetection訓練與測試
- UNet語義分割實戰:使用UNet實現對人物的摳圖
- MobileVIT實戰:使用MobileVIT實現影象分類
- SwinIR實戰:如何使用SwinIR和預訓練模型實現圖片的超分
- 【影象分類】手撕ResNet——復現ResNet(Pytorch)
- Deeplab實戰:使用deeplabv3實現對人物的摳圖