共用方式為


HOW TO:直接執行 SQL 查詢 (LINQ to SQL)

LINQ to SQL 會將您撰寫的查詢轉譯為參數型 SQL 查詢 (文字格式),並將它們傳送給 SQL Server 進行處理。

SQL 無法執行您應用程式可以在本機使用的各種方法。 LINQ to SQL 會嘗試將這些本機方法轉換為可以在 SQL 環境內進行的對等作業和函式。 .NET Framework 內建型別的大部分方法和運算子都可以直接轉譯為 SQL 命令。 而有些方法和運算則可以透過可用的函式產生。 無法產生的部分則會產生執行階段例外狀況。 如需詳細資訊,請參閱 SQL-CLR 型別對應 (LINQ to SQL)

如果 LINQ to SQL 查詢不足以進行特殊化工作,則可以使用 ExecuteQuery 方法執行 SQL 查詢,然後將查詢結果直接轉換為物件。

範例

在下列範例中,假設 Customer 類別的資料分佈於兩張資料表 (customer1 和 customer2)。 這個查詢會傳回 Customer 物件的序列。

Dim db As New Northwnd("c:\northwnd.mdf")
Dim results As IEnumerable(Of Customer) = _
    db.ExecuteQuery(Of Customer) _
    ("SELECT c1.custID as CustomerID," & _
    "c2.custName as ContactName" & _
    "FROM customer1 AS c1, customer2 as c2" & _
    "WHERE c1.custid = c2.custid")
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
(@"SELECT c1.custid as CustomerID, c2.custName as ContactName
    FROM customer1 as c1, customer2 as c2
    WHERE c1.custid = c2.custid"
);

只要表格式結果中的資料行名稱符合實體 (Entity) 類別的資料行屬性,LINQ to SQL 就會從任何 SQL 查詢建立物件。

ExecuteQuery 方法也允許使用參數。 使用下列程式碼,就可以執行參數型查詢。

    Dim db As New Northwnd("c:\northwnd.mdf")
    Dim results As IEnumerable(Of Customer) = _
db.ExecuteQuery(Of Customer) _
("SELECT contactname FROM customers WHERE city = {0}, 'London'")
Northwnd db = new Northwnd(@"c:\northwnd.mdf");
IEnumerable<Customer> results = db.ExecuteQuery<Customer>
    ("SELECT contactname FROM customers WHERE city = {0}",
    "London");

查詢文字中的參數使用與 Console.WriteLine() 和 String.Format() 所用的相同大括號標記法來表示。 實際上,String.Format() 是在提供的查詢字串上進行實際呼叫,但是會將大括號參數取代為所產生的參數名稱 (如 @p0、@p1 …、@p(n))。

請參閱

其他資源

背景資訊 (LINQ to SQL)

查詢資料庫 (LINQ to SQL)