程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> LINQ to SQL語句(18)之運算符轉換

LINQ to SQL語句(18)之運算符轉換

編輯:關於.NET

運算符轉換1.AsEnumerable:將類型轉換為泛型 IEnumerable

使用 AsEnumerable<TSource> 可返回類型化為泛型 IEnumerable 的參數。在 此示例中,LINQ to SQL(使用默認泛型 Query)會嘗試將查詢轉換為 SQL 並在服務器上執行。但 where 子句引用用戶定義的客戶端方法 (isValidProduct), 此方法無法轉換為 SQL。

解決方法是指定 where 的客戶端泛型 IEnumerable<T> 實現以替換泛型 IQueryable<T>。可通過調用 AsEnumerable<TSource>運算符來執行此操作。

var q =
  from p in db.Products.AsEnumerable()
  where isValidProduct(p)
  select p;

語句描述:這個例子就是使 用AsEnumerable以便使用Where的客戶端IEnumerable實現,而不是默認的 IQueryable將在服務器上轉換為SQL並執行的默認Query<T>實現。這很有 必要,因為Where子句引用了用戶定義的客戶端方法isValidProduct,該方法不 能轉換為SQL。

2.ToArray:將序列轉換為數組

使用 ToArray <TSource>可從序列創建數組。

var q =
  from c in db.Customers
  where c.City == "London"
   select c;
Customer[] qArray = q.ToArray();

語句描述:這 個例子使用 ToArray 將查詢直接計算為數組。

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

使用 ToList<TSource>可從序列創建泛型列表。下面的示例 使用 ToList<TSource>直接將查詢的計算結果放入泛型 List<T>。

var q =
  from e in db.Employees
  where e.HireDate >= new DateTime(1994, 1, 1)
  select e;
List<Employee> qList = q.ToList();
4.ToDictionary:將序 列轉化為字典

使用Enumerable.ToDictionary<TSource, TKey>方法可 以將序列轉化為字典。TSource表示source中的元素的類型;TKey表示 keySelector返回的鍵的類型。其返回一個包含鍵和值的Dictionary<TKey, TValue>。

var q =
  from p in db.Products
  where p.UnitsInStock <= p.ReorderLevel && ! p.Discontinued
  select p;
Dictionary<int, Product> qDictionary =
  q.ToDictionary(p => p.ProductID);
foreach (int key in qDictionary.Keys)
{
   Console.WriteLine(key);
}

語句描述:這個例子使用 ToDictionary 將查詢和鍵表達式直接鍵表達式直接計算為 Dictionary<K, T>。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved