linq 初步認識

2022-01-18 09:54:27 字數 3101 閱讀 6986

linq如果不能用的話 重灌一下vs就好了

linq,語言整合查詢(language integrated query)是一組用於c#和visual basic語言的擴充套件。它允許編寫c#或者visual basic**以查詢資料庫相同的方式操作記憶體資料。

是一種高整合化的資料庫訪問技術。

他與ado.net區別就是 ado.net是最基礎的  linq是最高端的;

實用linq  不會用資料庫,sql語句不會寫也可以訪問資料庫;

改變的是資料訪問層;

先做乙個table  共7列,再放乙個repeater迴圈繫結

準備工作完成後,在解決方案裡新建項,找到linq to sql

檔案格式是.dbml

命名使預設名不懂,想要操作那個資料庫就把資料庫名寫在前面。

建立完成來到這個介面,點選這個資源管理器,

左邊會出現乙個視窗,點選帶+號的那個按鈕

然後會在彈出乙個視窗,填寫資料庫資訊,選擇的時候就會發現只能選擇乙個庫。如果使用者名稱和密碼填寫錯誤是連不上資料庫的

連線之後何在資料庫裡是一樣的列表。建立實體類只需要把你需要的那個表拖到空白區域就可以了。他還會顯示出表之間的外來鍵關係

建好的類就是這樣,實體類在.cs裡面,這裡面的東西不要改,沒有情況會讓你改這裡面的內容。

在裡面找到了成員變數,這裡有個partial 代表這是類的一部分,所以可以屬性拓展;

接下來建立資料訪問類:

建立乙個類,類名與表明一致;

在類裡面輸入linq的名稱,例項化出來;

這個東西叫做  資料庫上下文;

寫乙個方法

這樣就完成了對資料庫users表的所有資料查詢, 通過資料庫上下文con找到users表 轉換成list格式,放到ulist裡面,在return出去。

更簡單的也可以直接在後台裡面這樣寫:

using是編寫乙個作用域,小括號後面建立乙個物件,是一種很好用的物件銷毀的方式。

這裡建立的物件con只能在花括號裡面用,走完花括號就會銷毀掉。

資料拓展

屬性拓展不能寫在linq的.cs檔案裡,因為只要linq類稍微有一點變化,哪怕是表移動了一點,他就會重新整理資料。

這裡的型別是bool?型,還有其他?型,他和bool型區別就是乙個可以為null乙個不可以;

實用的時候必須吧?型裝換成普通型別;

所以屬性拓展要再建乙個類,類名必須與表明一制。記得加上partial , 裡面再寫屬性拓展就可以了。要return的屬性通過下劃線可以點出來。

如果是有外來鍵關係的表可以直接點出來。

準備幾個textbox和乙個按鈕

後台  按鈕的點選事件

新增資料當然還是用資料庫上下文,

新增資料要用這兩句,第一句con.users.insertonsubmit(u) 是乙個新增資料方法,括號內新增乙個users型別的資料,但只是準備新增,第二句con.submitchanges();才是完成修改。新增資料。

刪除需要新建乙個web,後台接收一下傳遞過來的ids。

根據這個ids查詢出對應的物件,刪除這個物件;

然後彈出乙個提示,告訴使用者刪除了沒。

返回頁面;

這裡就需要ambda表示式;

users u =  con.users.where( r => r.ids.tostring() == 接收的id ).firstordefault();

這就是基本格式,r可以換成任意字母, =>就是基本格式  r點 就可以出現每一列的名,然後判斷**換格式);

查詢出來是個集合  取值用.firstordelault() 第一條或者[不存在,不執行,為空]

if(u != null)

con.users.deleteonsubmit(u);繫結需要刪除的物件

con.submitchanges();修改

修改資料

using (usersdataclassesdatacontext con = new usersdataclassesdatacontext())

}

- con.submitchanges();各修改資料準備過程就是準備修改過程,不用再用上下文物件來準備。直接一把提交

再重複一下

使用linq時要注意:

1.建立linq連線後生成的dbml檔案不要變動,生成的表不要碰,拖動表也會造成資料庫連線發生變動,需要重新儲存.

2.屬性拓展的使用:新增乙個新的類,不要在dbml中新增屬性拓展,一旦資料庫變動,屬性拓展類就會失效.

3.使用linq獲取的資料都是?int,?string等?資料型別,意思是也有可能為空,這時候運算元據需要先把資料型別轉化成int,string等資料型別.

在這裡運算元據庫用到了lambda表示式,是一種匿名函式,使用lambda表示式自動帶有防攻擊,不需要在使用parameter了.

C 3 0 初步認識LINQ

linq基本概念 linq language integrated query 是language integrated query的簡稱,它是整合在.net程式語言 例如 c vb.net等 中的一種特性,目的是為.net framework提供更加通用和便利的資訊查詢方式,並且它對資料來源提供了...

Linq之Lambda表示式初步認識

寫在前面 匿名方法 乙個例子 lambda 定義乙個例子 總結參考文 章匿名方法顧名思義,是沒有名字的方法,但是仍有方法體,仍能幹活。在很多地方可能你都見過它,比如js中,用的最多!看看msdn給的說法 在 2.0 之前的 c 版本中,宣告委託的唯一方法是使用命名方法。c 2.0 引入了匿名方法,而...

LINQ學習(一) LINQ初認識

一 簡介 1 什麼是linq?linq language integrated query 語言繼承查詢。linq是一組語言特性和api,可以使用統一的方式編寫各種查詢。用於儲存和檢索來自不同資料來源的資料,從而消除了程式設計語音和資料庫之間的不匹配,以及為不同型別的資料來源提供單個查詢介面。lin...