? ? ? Linq,全稱Language Integrated Query,作為C#3.0新語法,是C#語言的一個擴展,可以將數據查詢直接集成到編程語言本身中。?Linq表達式和SQL語句差不多,說白了就是顛倒sql語法, from where select ...,從from開始,以select/group by 結束,輸出一個IEnumerable<T>或 IQueryable<T>的集合。世間萬物皆系于一箭之上,存在即合理,技術是進步的,還可使用標準化查詢運算符(SQO),繼承自IEnuberable<T>接口,提供了 篩選、投影、聚合、排序等功能的方法,缺點就是語句太多龐大復雜。優點使用便捷,有即時加載(FindAll)和延時加載(Where)
? ? ? EF(Entity Framework)Ado.NET中面向開發數據的一種技術,有Code First、Model First、Database First,是微軟的一個ORM框架。
? ? ? Lambda表達式的本質就是匿名函數,可以包含表達式和語句,也可以用于創建委托或表達式樹類型,運算符為“=>”,讀作 goes to,借用MVC企業級實戰書中一圖
new Func<string, int>(delegate (string str) { return str.Length; });(delegate (string str) { return str.Length; }); //匿名方法 (string str) => { return str.Length; }; //Lambda語句 (string str) => str.Length; //Lambda表達式 (str) => str.Lenth; //省略類型,讓IDE去判斷 str => str.Lenth; //去掉括號
?Linq操作的是數據對象,所以需要先建立一個實體對象模型,操作的表如下
USE [IBBC] GO CREATE TABLE [Table_1]( IDD INT PRIMARY KEY NOT NULL, Nnmae VARCHAR(15) NULL )INSERT [dbo].[Table_1] ([IDD], [Nnmae]) VALUES (100, N'清高祖'),(102, N'清高宗'), (103, N'清太祖'),(104, N'Test1'), (105, N'Test2'),(106, N'Test3'), (107, N'Test4'),(108, N'Test5')
查詢:
public void Dbquery(int id) {IBBCEntities db = new IBBCEntities();var request = from d in db.Table_1where d.IDD == idselect new { d.IDD, d.Nnmae };
foreach (var item in request){Console.WriteLine("查詢語法: " + item);}var request1 = db.Table_1.SingleOrDefault(b => b.IDD == id);Console.WriteLine("(SQO)方法語法: " +request1.IDD+" "+request1.Nnmae);Console.ReadKey(); }
添加:
//添加:var add1 = db.Table_1.SingleOrDefault(c=>c.IDD==1010);if (add1.IDD.Tostring()==null){Table_1 tb = new Table_1{IDD = 1010,Nnmae = "張三豐"};db.Table_1.Add(tb);db.SaveChanges();}
(PS:add1.IDD為Int類型,所以永遠不會等于null,故取其ToString(),下同))
修改:
//修改 var update1 = db.Table_1.SingleOrDefault(c => c.IDD == 1010); if (update1.IDD.Tostring()!=null)
{
update1.Nnmae = "張君寶";
db.SaveChanges();
}
刪除:
//刪除var delete1 = db.Table_1.SingleOrDefault(c=>c.IDD==1010);if (delete1.IDD.Tostring()!=null)
{
db.Table_1.Remove(delete1);
db.SaveChanges();
}
?
權當做學習記錄
? ? ? ? --市人皆大笑,舉手揶揄之