使用 asenumerable可返回型別化為泛型 ienumerable 的引數。在此示例中,linq to sql(使用預設泛型 query)會嘗試將查詢轉換為 sql 並在伺服器上執行。但 where 子句引用使用者定義的客戶端方法 (isvalidproduct),此方法無法轉換為 sql。 解決方法是指定 where 的客戶端泛型 ienumerable實現以替換泛型 iqueryable。可通過呼叫 asenumerable運算子來執行此操作。
var q =from p in
db.products.asenumerable()
where
isvalidproduct(p)
select p;
語句描述:這個例子就是使用asenumerable以便使用where的客戶端ienumerable實現,而不是預設的iqueryable將在伺服器上轉換為sql並執行的預設query實現。這很有必要,因為where子句引用了使用者定義的客戶端方法isvalidproduct,該方法不能轉換為sql。
使用 toarray 可從序列建立陣列。
var q =from c in
db.customers
where c.city == "
london
"select
c;customer qarray = q.toarray();
語句描述:這個例子使用 toarray 將查詢直接計算為陣列。
使用 tolist可從序列建立泛型列表。下面的示例使用 tolist直接將查詢的計算結果放入泛型 list。
var q =from e in
db.employees
where e.hiredate >= new datetime(1994, 1, 1
)
select
e;list
qlist = q.tolist();
使用enumerable.todictionary方法可以將序列轉化為字典。tsource表示source中的元素的型別;tkey表示keyselector返回的鍵的型別。其返回乙個包含鍵和值的dictionary。
var q =from p in
db.products
where p.unitsinstock <= p.reorderlevel && !p.discontinued
select
p;dictionary
qdictionary =q.todictionary(p =>p.productid);
foreach (int key in
qdictionary.keys)
語句描述:這個例子使用 todictionary 將查詢和鍵表示式直接鍵表示式直接計算為 dictionary。
LINQ to SQL語句 18 之運算子轉換
運算子轉換1.asenumerable 將型別轉換為泛型 ienumerable 使用 asenumerable可返回型別化為泛型 ienumerable 的引數。在 此示例中,linq to sql 使用預設泛型 query 會嘗試將查詢轉換為 sql 並在伺服器上執行。但 where 子句引用使...
LINQ to SQL語句 16 之物件標識
實際上,通常我們是將資料從資料庫中提取出來放入另一層中,應用程式在該層對資料進行處理。這就是 linq to sql 支援的模型。將資料作為行從資料庫中提取出來時,你不期望表示相同資料的兩行實際上對應於相同的行例項。如果您查詢特定客戶兩次,您將獲得兩行資料。每一行包含相同的資訊。對於物件。你期望在你...
LINQ to SQL語句 16 之物件標識
實際上,通常我們是將資料從資料庫中提取出來放入另一層中,應用程式在該層對資料進行處理。這就是 linq to sql 支援的模型。將資料作為行從資料庫中提取出來時,你不期望表示相同資料的兩行實際上對應於相同的行例項。如果您查詢特定客戶兩次,您將獲得兩行資料。每一行包含相同的資訊。對於物件。你期望在你...