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);
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: 把集合中的對象拼接到另外一個集合中。具體百度一下。
// 表一
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}
"
;