var temp = from u in dbcontexttable
where u.id>4
select u;
規範的寫法其實是:
iqueryabletemp=from u in dbcontexttable
where u.id>4
sele ct u;
或者iqueryable temp=from u in dbcontexttable
where u.id>4
sele ct u;
(因為iqueryable繼承iqueryable,所以可以直接用其基型別)
上面的查詢語句初始化了iqueryable介面裡面的三個引數
1.linq表示式轉成expression型別
2.給type elementtype賦值,也就是model的型別
3.給iqueryable provider賦值,ef provider
當用到iqueryable介面的集合的資料的時候,provider(這裡是efprovider)解析expresion表示式獲取相應的資料。再進行foreach遍歷。
linq to xml則是xml provider
linq to ***則是*** provider
在資料庫內進行過濾:where表示式會生成到查詢語句中,也就是說linq to ef查詢是在資料庫內進行過濾的。可以用資料庫監測工具檢視ef自動生成的。
sql語句。
例如:select
[extent1].[id] as [id],
[extent1].[username] as [username],
[extent1].[pwd] as [pwd]
from [dbo].[userset] as [extent1]
where [extent1].[id] > 200
在記憶體裡面過濾:把資料庫裡面的資料查詢出來到記憶體再過濾,如果資料過多,記憶體會boom。
什麼情況下使用記憶體過濾:
list集合(之前學過的經典集合,例如:array,dictionary。。。)和
iqueryable介面的不同點。
linq to object
立即將資料庫表的資料載入到list中來
var demolist=from u in dbcontext.tablename.tolist()
where u.id>4
select u;
例如:select
[extent1].[id] as [id],
[extent1].[username] as [username],
[extent1].[pwd] as [pwd]
from [dbo].[userset] as [extent1]
是沒有where過濾語句的
還可借助vs的除錯工具設定斷點看看
區別:model first
資料庫中資料進行過濾
最近發現自己的抓取資料中存在一些無用的資訊,於是決定將其清除掉 開始看到一些提示是用ltrim這個函式,一直看到都是select的,害的人以為只能用select才能進行操作,呃.這個也是我知識上面的缺陷,於是想到了建立新錶,語句如下,可是個人感覺有些麻煩,代價也有點大,呵呵 select id,lt...
資料庫表存在記憶體中
資料庫有一種機制 一些程式啟動就需要查詢的表,和一些被頻繁訪問的表。比如 m ope d m product d m eqid d 等可以考慮將這些資料量不大但經常使用的的表快取到記憶體當中。做法有兩種 1 把這些基礎資料存在redis裡面。每次用的時候從redis查,效率很高。但是有乙個缺點,up...
MySQL資料庫 過濾資料
資料庫一般包含大量的資料,但是我們大部分情況下並不需要檢索所有的資料,只要檢索部分資料就行了。1.使用where 子句 在select子句中,資料根據where子句中指定的搜尋條件進行過濾。where子句在表名 from子句 之後給出,如下所示 select users.user name,user...