次の方法で共有


DataContext.ExecuteQuery メソッド

定義

オーバーロード

ExecuteQuery(Type, String, Object[])

データベース上で SQL クエリを直接実行します。

ExecuteQuery<TResult>(String, Object[])

データベース上で SQL クエリを直接実行して、オブジェクトを返します。

ExecuteQuery(Type, String, Object[])

データベース上で SQL クエリを直接実行します。

public:
 System::Collections::IEnumerable ^ ExecuteQuery(Type ^ elementType, System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.IEnumerable ExecuteQuery (Type elementType, string query, params object[] parameters);
member this.ExecuteQuery : Type * string * obj[] -> System.Collections.IEnumerable
Public Function ExecuteQuery (elementType As Type, query As String, ParamArray parameters As Object()) As IEnumerable

パラメーター

elementType
Type

返される IEnumerable<T> の型。

オブジェクト内のフィールドまたはプロパティに対して、クエリの結果内の列の一致を行うアルゴリズムは、以下のように動作します。

フィールドまたはプロパティが特定の列名に割り当てられている場合は、その列名が結果セットに存在する必要があります。

フィールドまたはプロパティが割り当てられていない場合は、フィールドまたはプロパティと同じ名前の列が結果セットに存在する必要があります。

比較では、まず大文字と小文字が区別されます。 一致するものが見つからない場合は、大文字と小文字を区別せずに以降の検索が実行されます。

このクエリは、以下の条件がすべて当てはまる場合、(遅延読み込みされる場合を除いて) オブジェクトの追跡されるフィールドおよびプロパティをすべて返す必要があります。

T は、 によって DataContext明示的に追跡されるエンティティです。

ObjectTrackingEnabledtrueです。

そのエンティティに主キーがある場合。

それ以外の場合は、例外がスローされます。

query
String

実行する SQL クエリ。

parameters
Object[]

コマンドに渡すパラメーターの配列。 以下の動作に注意してください。

配列内のオブジェクトの数が、コマンド文字列で特定された最大数より小さい場合、例外がスローされます。

配列にコマンド文字列で参照されないオブジェクトが含まれている場合、例外はスローされません。

パラメーターが null の場合は、DBNull.Value に変換されます。

戻り値

クエリによって返されるオブジェクトの IEnumerable<T> コレクション。

適用対象

ExecuteQuery<TResult>(String, Object[])

データベース上で SQL クエリを直接実行して、オブジェクトを返します。

public:
generic <typename TResult>
 System::Collections::Generic::IEnumerable<TResult> ^ ExecuteQuery(System::String ^ query, ... cli::array <System::Object ^> ^ parameters);
public System.Collections.Generic.IEnumerable<TResult> ExecuteQuery<TResult> (string query, params object[] parameters);
member this.ExecuteQuery : string * obj[] -> seq<'Result>
Public Function ExecuteQuery(Of TResult) (query As String, ParamArray parameters As Object()) As IEnumerable(Of TResult)

型パラメーター

TResult

返されるコレクション内の要素の型。

パラメーター

query
String

実行する SQL クエリ。

parameters
Object[]

コマンドに渡すパラメーターの配列。 以下の動作に注意してください。

配列内のオブジェクトの数が、コマンド文字列で特定された最大数より小さい場合、例外がスローされます。

配列にコマンド文字列で参照されないオブジェクトが含まれている場合、例外はスローされません。

パラメーターが null の場合は、DBNull.Value に変換されます。

戻り値

IEnumerable<TResult>

クエリによって返されるオブジェクトのコレクション。

次の例は、このメソッドの 1 つの使用方法を示しています。

var customers = db.ExecuteQuery<Customer>(@"SELECT CustomerID, CompanyName, ContactName, ContactTitle,
   Address, City, Region, PostalCode, Country, Phone, Fax  
   FROM   dbo.Customers
   WHERE  City = {0}", "London");

foreach (Customer c in customers)
    Console.WriteLine(c.ContactName);
Dim customers = db.ExecuteQuery(Of Customer)("SELECT CustomerID, _    
    CompanyName, ContactName, ContactTitle, _
   Address, City, Region, PostalCode, Country, Phone, Fax _
   FROM dbo.Customers _
WHERE City = {0}", "London")

For Each c As Customer In customers
    Console.WriteLine(c.ContactName)
Next

注釈

このメソッドは、LINQ to SQLが特定のシナリオに対応していない場合のパススルー メカニズムです。

クエリの結果の列を オブジェクトのフィールドとプロパティに一致させるアルゴリズムは、次のように機能します。

  • フィールドまたはプロパティが特定の列名に割り当てられている場合は、その列名が結果セットに存在する必要があります。

  • フィールドまたはプロパティが割り当てられていない場合は、フィールドまたはプロパティと同じ名前の列が結果セットに存在する必要があります。

  • 比較は、最初に大文字と小文字が区別される一致を探すことによって実行されます。 このような一致が見つからない場合は、大文字と小文字を区別しない一致に対して後続の検索が行われます。

  • 次のすべてが当てはまる場合、クエリはオブジェクトのすべての追跡対象フィールドとプロパティ (遅延読み込みの対象とは別に) を返す必要があります。

    • が によって明示的に追跡されるエンティティである場合<T>DataContext

    • ObjectTrackingEnabled は true です。

    • そのエンティティに主キーがある場合。

    それ以外の場合は、例外がスローされます。

  • それ以外の場合、クエリはオブジェクトの追跡対象フィールドとプロパティのサブセットのみを取得できます。

適用対象