C# 基础笔记
一、數據類型 1.var (匿名類型)弱類型 可以自動檢測數據類型; 2.匿名類型對象 (對象初始化) Person p = new Person{Id=1,Name="aaaa"} ? 3.lanbda 表達式? ? 基礎使用用法 // 委托是把一個方法作為一個參數傳遞給另一個方法 委托? // 無餐無返的委托 ? ? ? public delegate void MyDelegate1(); /*************************************************************/ // 有餐無返的委托 ? ? ? ? ? ? public delegate void MyDelegate2(int i); // 有餐返回是 boolean 類型 ? ? ? ? ? ? public delegate void MyDelegate3(int i); ? // 靜態方法 ? ? ? ? ? ? static void Show() ? ? ? ? ? ? { ? ? ? ? ? ? ? ? Console.WriteLine("Show"); ? ? ? ? ? ? } // Main 方法里寫 static void Main(string[] args) { // 無餐寫法 ? ? ? ? ? ? ? ? MyDelegate1 del = ()=> ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? Console.WriteLine("這是我的 del 方法。") ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? // 調用輸出 ? ? ? ? ? ? ? ? del(); 輸出結果:? ?這是我的 del 方法。 // 有參數無返回值 MyDelegate2 del2 = (a)=> ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? Console.WriteLine("del 方法"+a); ? ? ? ? ? ? ? ? } // 調用輸出 ? del2(12); 輸出結果:? ?del 方法12 ******************************************************** // 有參返回是 bool 結果 ? ? ? ? ? ? ? MyDelegate3 del3 = (a)=> a>12; ? ******************************************************** ? // 微軟提供的 Action 委托 有 16 中重載方法 共有 16 參數。 使用方式: // 無返回值 ? ? ? ? ? Action a = (a)=>{Console.WriteLine("Hello");} // 有返回值 ? ? ? ? ? ? ? ? Action <int,string> a1 = (b1,b2)=> ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? Console.WriteLine("Hello"+a1); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? List<int> list = new List<int>(); // 原生寫法 ? ? ? ? ? ? ? ? list.Where((num)=>{return num>12;}) // 簡寫 ? ? ? ? ? ? ? ? list.Where(m=>m>12); } // 微軟提供的 Action 委托 有 16 中重載方法 共有 16 參數。 使用方式: ??????????? // 無返回值 ??????????? Action a = (a) => { Console.WriteLine("Hello"); } ??????????????? // 有返回值 ??????????? Action<int, string> a1 = (b1, b2) => ??????????????? { ??????????????????? Console.WriteLine("Hello" + a1); ??????????????? } ??????????????? List<int> list = new List<int>(); ??????????? // 原生寫法 ??????????? list.Where((num) => { return num > 12; }) ??????????????? // 簡寫 ??????????????? list.Where(m => m > 12); ? 集合常用的方法: ??????????????? Any():判斷集合是否包含元素。 ??????????????? Distinct():去除重復數據。 ??????????????? 排序:指定的列排序 ??????????????????? 升序(list.OrderBy(m => m.Id)) ??????????????????? 降序(list.OrderByDescending(m => m.Id)) ??????????????? 注意:在 EF 里使用 skip 和 Take 分頁。必須排序。list 集合里不用。 ??????????????? Skip(int i): 跳過 n 條數。? Take(int i):每頁顯示 n 條數據。 ??????????????? Except(): 排除集合中的數據。原集合數據不變。 ??????????????? Union(): 把集合中的數據聯合到另一個集合中。原集合數據不變。 ??????????????? 分組:常用的五個聚合函數??? // 方便統計數據。 ??????????????? sum:求和 count:總數 max:最大值 min:最小值 avg:平均分 ??????????????? 分組的作用:方便統計數據。 ??????????????? SelectMany: 把集合中的對象拼接到另一個集合中。具體百度一下。 ??????????????? Jon(): 鏈表。 示例用法: ??? // 表一 ??? public class Tab1 ??? { ??????? public int Tab1Id { get; set; } ??????? public string Name { get; set; } ??? } ??? // 表二 ??? public class Tab2 ??? { ??????? public int Tab2Id { get; set; } ??????? public string Tab2Name { get; set; } ??????? public int Tab1Id { get; set; } ??? } ?List<Tab1> tab1 = new List<Tab1> ???????? { ????????????? new Tab1{Tab1=1,Name="班級1"}, ????????????? new Tab1{Tab1=2,Name="班級2"}, ????????????? new Tab1{Tab1=3,Name="班級3"} ???????? } ??????? List<Tab2> tab2 = new List<Tab2> ??????? { ??????????? new Tab2{Tab2Id=1,Tab2Name="張三1",Tab1Id=1}, ??????????? new Tab2{Tab2Id=2,Tab2Name="張三2",Tab1Id=1}, ??????????? new Tab2{Tab2Id=3,Tab2Name="張三3",Tab1Id=1}, ??????????? new Tab2{Tab2Id=4,Tab2Name="張三4",Tab1Id=1}, ??????????? new Tab2{Tab2Id=5,Tab2Name="張三5",Tab1Id=1}, ??????????? new Tab2{Tab2Id=6,Tab2Name="張三6",Tab1Id=1} ??????? }; 鏈接: ????????? // 接收 鏈接好的數據 ??????????? var result = tab2.Where(tab2, t2 => t2.Tab1Id, (t1, t2) => new { t1.Name, t2.Tab2Name }); ??????????? // 輸出鏈表結果 ??????????? foreach (var item in result) ??????????? { ??????????????? Console.WriteLine(item.Name + " " + item.Tab2Name); ??????????? } ??????????? linq(): 跟 lanbda 沒什么區別 ??????????????? // lanbda 寫法結果 ??????????? foreach (var item in list.Where(m => m.Id == 6)) ??????????? { ??????????????? Console.WriteLine(item.Id); ??????????? } ??????????? // linq 寫法 比 lanbda 可讀性強 ??????????? var data = from tab1 in list where tab1.Tab1Id < 6 select tab1; ??????????? // linq 寫法輸出結果 ??????????? foreach (var stu in data) ??????????? { ??????????????? Console.WriteLine(stu.Id); ??????????? } ??????????? lanbda 與 linq 結合使用 ??????????????? 先寫 linq 在寫點括起來 使用。 ??????????????? 開發中的調試小技巧:// 在開發中不起作用。 ??????????????? public override string ToString() ??????? { ??????????? return $"id:{Id}? name:{Name}"; ??????? }
轉載于:https://www.cnblogs.com/FGang/p/7082912.html
總結
- 上一篇: 经常使用的MySQL语句整理
- 下一篇: C++ Primer 第9章 顺序容器