linq to sql中的select
1:from 變數名(例如:p) in 表名(例如:customers);
2:多表查詢(例如:from a in orders),即在第乙個from 語法後再來乙個或多少;
3:條件表達示(例如:where p.id>5);
4:分組表示式(例如group p by p.id);
5:排序表示式(例如:orderby p.id);
6:select 要讀取的字段資訊(例如:p.id)。
說明:
1:1和6是一定要有的,否則會編譯錯誤。
1>:linq to sql中的selectmany
2>:linq to sql 中的join
3:分組可以引數這篇文章:linq to sql 中的group
下面是最簡單的單錶查詢:接下來我對上面的6個部分的其中幾個部分詳細而簡單的說明下:
from p in customers
select p
第一:select的用法,因為關係到最後的查詢結果,所以是開發員最關心的地方。
1:可以直接是乙個物件,即不指明任何字段,像上面的select p,這相當於讀取p對應表的所有字段,在傳統sql中就是select *的意思,一般實際應用中不推薦這樣做,除非字段特別少而且都是要輸出的內容。
2:某乙個表的欄位名,例如:select p.id,可以包含乙個以上的字段,而且可以包含不同表的字段,下面的幾種寫法都是正確的:
1>:select p,讀取全部字段;
2>:select p.id,乙個表的乙個字段;
3>:select p.id,p.name,乙個表的多個字段;
4>:select p.id,a.orderid,多個表的多個字段。
3:可以是乙個指定的物件:
select new students
; 4:可以指定乙個匿名物件:
select new ;
5:欄位和物件不能混合使用,下面的用法都是錯誤的:
select p.id,
select new
; select p.id,
new
; 6:如何進行子查詢,在select表示式中就可以完成。
from c in customers
select new }
7:子查詢時給表加上別名,主要是利用let關鍵字。
from c in customers
let highvalue =
from p in c.purchases
where p.price > 1000
select new
select new
上面的查詢也可以寫成:
from c in customers
select new }
第二:select 完成後,就要考慮如何排序了。主要是應用orderby 關鍵字,descending為降序,否則為公升序。
from p in purchases
orderby p.price descending, p.description
select p
第三:如何過濾掉重覆記錄,我們可以使用distinct()屬性。
var list6 = (from p in db.customers
select p.id).distinct();
第四:如何實現傳統sql中的in和not in, 我們可以利用contains()來實現。拉姆達表示式支援。
customers.where (c => c.name.contains ("a"))
第五:如何實現傳統sql中的like表示式:拉姆達表示式支援。
1:customers.where (c => c.name.contains ("a")) ,相當於like '%a%'。
2:分兩種寫法:
1>:customers.where (c => c.name.startswith ("a")),相當於like 'a%'。
2>:customers.where (c => c.name.endswith ("a")),相當於like '%a'。
3>:自己擴充套件乙個like的方法。我會在下面的文章中試試擴充套件linq to sql的方法。
總結:select操作對於以資料查詢為主的應用程式來說特別重要,了解它的基礎結構,原理後才能寫出高效的應用程式。聽有園友說,linq to sql可能會被拋棄,無論真與否,心中總不是個滋味,但我還是會堅持學習完linq to sql,做事總不能半途而廢。
注: 文中參考nutshell示例
獲取專案中所有makefile檔案
bin bash 說明在divison目錄下執行,用於獲取所有makefile檔案,結果會按原目錄結構儲存 function back makes find type f name mm ake ff ile for f in maks do find得到的檔案可能是絕對路徑,此時刪頭去尾得到中間路...
刪除專案中所有的 pycache
當第一次執行 python 指令碼時,直譯器會將 py指令碼進行編譯並儲存到 pycache 目錄 下次執行指令碼時,若直譯器發現你的 py指令碼沒有變更,便會跳過編譯一步,直接執行儲存在 pycache 目錄下的 pyc檔案 1 單次關閉 執行指令碼時新增 b引數即可 2 永久關閉 設定環境變數p...
jstl標籤foreach在專案中的運用
在jsp頁面j用的最多的就是用來迴圈遍歷乙個list,話不多說,看 public string updatecontract model model,webrequest request controller層往jsp頁面返回了乙個materiallist的集合,放在了model裡面。解釋一下 it...