學習ef之前要熟悉以下知識:
1.自動屬性(auto-implemented properties)
//2.隱式型別var以前的寫法 .net2.0
private
string
_username;
public
string
username
set }//
現在 只適合3.5以上
public string_username
它是在編譯已經能確定變數的型別,是根據後面的值自動推斷型別,編譯時把推斷的型別替換掉var
看如下**:var v = new ;
console.writeline(v.name);
console.writeline(v.age);
console.writeline(v.email);
console.readline();
//var v.name=」小明」 ,隱式型別只能讀取,不能賦值
通過反編譯我們看到編譯器給我們自動生成了乙個我們沒見過的類,這就是隱式型別
3.物件初始化器與集合初始化器
物件初始化器
//集合初始化器寫法一 demotest person = new demotest ;
//寫法一 demotest person = new demotest("123") ;
//二種寫法都在什麼時候用?
//寫法一 是在呼叫類的預設建構函式時用
//寫法二 是在呼叫類的預設有參建構函式時用
listlist= new list,4.擴充套件方法new demotest()
};
這些帶向下箭頭的都是擴充套件的,那麼我們轉到定義(f12)看下,這個擴充套件定義在enumerable類裡面,是不是跟大家想的不一樣?一般都是轉到list本類裡面,所以所有的擴充套件方法,都在靜態類中。
我們要寫擴充套件方法的主要目的是什麼?
當乙個型別已經寫好之後,需要給這個型別加一些方法,但是加這個方法的時候不能修改型別,不能修改這個類的源**,那麼大家會想直接修改源**不就行了,假如.net2.0以前的版本list有一些方法是乙個版本,你要是修改了可能有不相容的問題
下面我們就自己寫乙個擴充套件方法
class下面我們給string加乙個擴充套件方法:program
} public
class
newclass
public
intage
public
string
public
void
sayhello()
}//1.建立乙個靜態類
public
static
class
demotest
}
class接下來我們用反編譯看下:program
}//1.建立乙個靜態類
public
static
class
demotest
}
擴充套件方法只是看起來像是某個物件的方法,從反編譯我們可以看出實際上根本不是該物件的方法,其實就是呼叫了某個靜態類中的方法。
更多的請看:
5.lambda表示式
首先我們說下匿名方法(知道即可),什麼是匿名方法?我們寫乙個方法為什麼要不寫名字呢?那麼我們該怎麼呼叫呢?接下來就這些問題進行解答:
1.顧名思義,沒有方法名的就叫匿名方法(o(∩_∩)o~)
2.當乙個方法只用一次,不需要在用,所以沒有必要在為方法起乙個名字,這樣做簡單,方便
3.匿名方法不能直接定義,而是在給委託變數賦值乙個方法時定義
定義匿名方法**如下:
class那麼接下來我們說下豬腳lambdaprogram
;demodelegate();
showmessage();
console.readkey();
}static
void
showmessage()
}public
delegate
void demodelegate();//
定義乙個無引數無返回值的委託
:lambda其實就是匿名方法的簡化寫法
什麼是lambda表示式?'lambda表示式'就是乙個匿名的函式(匿名方法),可以包含表示式和語句,可建立委託
**如下:
1.無引數無返回值
demodelegate demolambda = () =>;2.有引數有返回值demolambda();
console.readkey();
寫法一:
static寫法二:void main(string
args)
;int result = demodelegate(10,"10"
); console.writeline(result);
console.readkey();}}
public
delegate
int paramsdelegate(int num1, string str);//
有引數有返回值
classlambda其他用法:program
return
arr.sum();
};int result = paramsdelegate(1, 4, 5, 10, 9
); console.writeline(result);
console.readkey();}}
public
delegate
int paramsdelegate(params
int arr);
首先擴充套件下泛型委託:
1.action(非泛型版本)
class2.action<>(泛型版本)program
static
void
ac()
}
staticvoid main(string
args)
;
lambda(5,10);
console.readkey();3.func<>(只有泛型版本)}static
void listac(string
str)
通過反編譯可以看出,func<>必須有返回值,可以有引數,用**看下:
static我們看下常見篩選時使用lambdavoid main(string
args)
;int result=func(5,10
); console.writeline(result);
console.readkey();
} static
int listfunc(int num1,int num2,int
num3)
list list = new list() ;結尾:第一次寫博文,還請大神們多多指點!ienumerable
ie =list.where(l => );
foreach (var item in
ie)
console.readkey();
Entity Framework 架構簡介
當微軟的wcf 大行其道,通用資料訪問模型entity framework卻稍遜一籌,有很多需要完善和進步的地方,本文對entity framework 架構做一下簡介。實體框架 entitry framework 以下簡稱ef 看起來像乙個有趣的技術,更強大,比linq to sql 更先進。這兩...
entity framework 批量刪除
以前用sql寫批量刪除的時候,感覺挺利索的,簡潔地寫了 public bool delectusersuggest string addsql 然後在頁面層直接呼叫 現在用entity framework,感覺有點麻煩不能直接delete,還要先把資料查出來,以下是主要 1 先查出實體 region...
Entity Framework 動態查詢
不想多說什麼直接說 region 搜尋並分頁 ljy 傳入搜尋條件,當前頁碼,每頁的顯示的條數,資料的總數 輸出引數 三個引數,返回 商實體 搜尋條件 當前頁碼 每頁的顯示的條數 資料的總數 public iqueryable endregion 在頁面呼叫時如果通過時間來查詢,請記住一定要這樣寫 ...