C# 基礎筆記

 
    1、數據類型
        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} " ;
        }
相關文章
相關標籤/搜索