LINQ to SQL語句 18 之運算子轉換

2021-06-08 04:54:18 字數 1528 閱讀 9832

運算子轉換1.asenumerable:將型別轉換為泛型 ienumerable

使用 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。

2.toarray:將序列轉換為陣列

使用 toarray 可從序列建立陣列。

var q =

from c in db.customers

where c.city == "london"

select c;

customer qarray = q.toarray();

複製**

語句描述:這 個例子使用 toarray 將查詢直接計算為陣列。

3.tolist:將序列轉換為 泛型列表

使用 tolist可從序列建立泛型列表。下面的示例 使用 tolist直接將查詢的計算結果放入泛型 list。

var q =

from e in db.employees

where e.hiredate >= new datetime(1994, 1, 1)

select e;

listqlist = q.tolist();

複製**

4.todictionary:將序 列轉化為字典

使用enumerable.todictionary方法可 以將序列轉化為字典。tsource表示source中的元素的型別;tkey表示 keyselector返回的鍵的型別。其返回乙個包含鍵和值的dictionary。

var q =

from p in db.products

where p.unitsinstock <= p.reorderlevel && ! p.discontinued

select p;

dictionaryqdictionary =

q.todictionary(p => p.productid);

foreach (int key in qdictionary.keys)

複製**

語句描述:這個例子使用 todictionary 將查詢和鍵表示式直接鍵表示式直接計算為 dictionary。

LINQ to SQL語句 18 之運算子轉換

使用 asenumerable可返回型別化為泛型 ienumerable 的引數。在此示例中,linq to sql 使用預設泛型 query 會嘗試將查詢轉換為 sql 並在伺服器上執行。但 where 子句引用使用者定義的客戶端方法 isvalidproduct 此方法無法轉換為 sql。解決方...

LINQ to SQL語句 16 之物件標識

實際上,通常我們是將資料從資料庫中提取出來放入另一層中,應用程式在該層對資料進行處理。這就是 linq to sql 支援的模型。將資料作為行從資料庫中提取出來時,你不期望表示相同資料的兩行實際上對應於相同的行例項。如果您查詢特定客戶兩次,您將獲得兩行資料。每一行包含相同的資訊。對於物件。你期望在你...

LINQ to SQL語句 16 之物件標識

實際上,通常我們是將資料從資料庫中提取出來放入另一層中,應用程式在該層對資料進行處理。這就是 linq to sql 支援的模型。將資料作為行從資料庫中提取出來時,你不期望表示相同資料的兩行實際上對應於相同的行例項。如果您查詢特定客戶兩次,您將獲得兩行資料。每一行包含相同的資訊。對於物件。你期望在你...