Share via


LINQ to SQL 查詢

更新: November 2007

使用與 LINQ 相同的語法,就可以定義 LINQ to SQL 查詢。唯一的差別在於查詢中參考的物件會對應至資料庫中的項目。如需詳細資訊,請參閱 LINQ 查詢簡介

LINQ to SQL 會將您撰寫的查詢轉譯為對等 SQL 查詢,並將它們傳送給伺服器進行處理。更精確的說,應用程式會使用 LINQ to SQL API 來要求執行查詢。LINQ to SQL 提供者接著會將查詢轉換為 SQL 文字,並將執行委派給 ADO 提供者。而 ADO 提供者會將查詢結果傳回為 DataReader。然後,LINQ to SQL 提供者會將 ADO 結果轉譯為使用者物件的 IQueryable 集合。

下圖描述這個一般流程。

查詢執行圖表

LINQ to SQL 查詢

注意事項:

.NET Framework 內建型別的大部分方法和運算子都可以直接轉譯為 SQL。LINQ 無法轉譯的部分則會產生執行階段例外狀況 (Exception)。如需詳細資訊,請參閱SQL-CLR 型別對應 (LINQ to SQL)

下表顯示 LINQ 與 LINQ to SQL 查詢項目之間的相似及差異部分。

項目

LINQ 查詢

LINQ to SQL 查詢

保留查詢之區域變數的傳回型別 (適用於傳回序列的查詢)

泛型 IEnumerable

泛型 IQueryable

指定資料來源

使用 From (Visual Basic) 或 from (C#) 子句

相同

篩選

使用 Where/where 子句

相同

群組

使用 Group…By/groupby 子句

相同

選取 (投影)

使用 Select/select 子句

相同

延後執行與立即執行

請參閱LINQ 查詢簡介

相同

實作聯結 (Join)

使用 Join/join 子句

可以使用 Join/join 子句,但是使用 AssociationAttribute 屬性 (Attribute) 會更具效率。如需詳細資訊,請參閱跨關聯性查詢 (LINQ to SQL)

遠端執行與本機執行

 

如需詳細資訊,請參閱遠端和本機查詢執行的比較 (LINQ to SQL)

資料流 (Streaming) 與快取查詢

不適用於本機記憶體案例

 

請參閱

概念

LINQ 查詢簡介

基本查詢作業 (LINQ)

查詢作業中的型別關聯性 (LINQ)

其他資源

LINQ to SQL 的查詢概念