-2

linq to sql を使用すると、linq によってどのような sql が生成されているかを示すビジュアライザーはほとんど存在しませんが、linq でオブジェクトをクエリする場合、同様の sql ステートメントを作成する方法はあります。例として

string[] names =
        new string[] { "Jon Skeet", "Marc Gravell", "tvanfosson", 
                       "cletus", "Greg Hewgill", "JaredPar" };

    var results = from name in names
                  where name.StartsWith("J")
                  select name;

結果からSQLを抽出できますか?

以下の関数を使用してSQLを作成することをお勧めします....

public static class MyExtensions
{
public static string ToTraceString<T>(this IQueryable<T> t)
{
    string sql = "";
    ObjectQuery<T> oqt = t as ObjectQuery<T>;
    if (oqt != null)
        sql = oqt.ToTraceString();
    return sql;
}
}

それは本当ですか?はいの場合、結果をIQueryableに変換してからToTraceString()メソッドを呼び出す方法を教えてください。ありがとう

4

2 に答える 2

2

'linq2objects'に対してSQLを使用することはできないと確信しているため、それらからSQLを取得することはできません。

Linq 2オブジェクトは、基本的に、SQLのテーブルスキャンとして機能します。実行されると、ソースの行を1つずつ読み取り、それぞれにフィルター/セレクターを適用します。たとえば、 http: //blogs.msdn.com/b/wesdyer/archive/2007/01/03/how-linq-to-objects-queries-work.aspxを参照してください。

私はあなたがクエリのデバッグに興味があると思います、そしてこれに答えるスタックオーバーフローに関する別のトピックがあります:LINQステートメントをデバッグする方法

于 2012-08-05T09:01:13.290 に答える
2

オブジェクトへの Linq は SQL を生成しません。これは、linq to entities または linq to sql を使用している場合にのみ当てはまります。

于 2012-08-05T08:53:01.933 に答える