3

SQLクエリからローカル変数に結果を取得するために(どこでも)見つけることができる最良の解決策は、NULLList<dynamic>またはIEnumerable<dynamic>変数宣言を使用することでした。

次のようにして変数を作成します。

@{
    IEnumerable<dynamic> myVariable = null;
}

変数は、次のようなデータベース クエリから値を取得できます。

@{
    try
    {
        Database db = Database.Open("name"); // name of connectionString configured in web.config
        string myQuery = "EXEC dbo.Get_Results @Param1=@0, @Param2=@1";
        myVariable = db.Query(myQuery, @Param1, @Param2);
        db.Close();
        db.Dispose();
    }
    catch (Exception ex)
    {
        // Do something
    }

これにより、次のようなことができます。

@if(myVariable != null)
{
    foreach (var row in myVariable)
    {
        // Do something
    }
}

これは完全に機能していますが、私がまだ興味を持っているのは、私が使用している方法List<dynamic>を使用する代わりに、 を使用して同じことを行うIEnumerable<dynamic>方法です。

List<dynamic>私が使用している同等のソリューションは何IEnumerable<dynamic>ですか?

私の質問自体は非常に単純であることは知っていますが、結果を事前に宣言された変数に受け取ることができるクラスを作成しようとしたときに、エラーを暗黙的に変換できないことを解決しようとするのを乗り越えるのに長い時間がかかりました。db.Query(commandText)したがって、これが他の誰かが同じまたは類似のものを理解しようとするのに役立つ場合に備えて、より詳細を提供する必要があると思いました. IEnumerable<dynamic>解決しようとしていた問題に対するより簡単な解決策に目を向けた、無関係なトピックで解決策を見つけました。

4

1 に答える 1

3

Enumerable.Empty<string>()nullではありません。これは、文字列の空のシーケンスです。たとえば、次のコードは「false」を出力することに注意してください。

var sequence = Enumerable.Empty<string>();
Console.WriteLine(sequence == null);

おそらく、新しい(空の)リストを作成する必要があります。

List<dynamic> x = new List<dynamic>();

または、null参照を保持するためにリスト変数が本当に必要な場合:

List<dynamic> x = null;
于 2012-09-04T02:42:06.007 に答える