2011-07-18 11 views
2

私はIN演算子のソースとして機能するListを持っています。典型的なlinq-to-sqlクエリ:クラスメンバー変数と "ローカルコレクションを使用したクエリはサポートされていません"

public void foo() 
{ 
    var inThisListOnly = new string[] { "VA", "MA" }; 

    var result = (
     from o in Orders 
     where inThisListOnly.Contains(o.State) 
     select o 
    ) 
    .ToDictionary(o => o.Id, o => o); 
} 

すべて正常に動作します。私はクラスのメンバ変数になるためにfooの外でinThisListOnlyを移動することによって、いくつかのCPUサイクルを節約したい。

public class FooClass 
{ 
    private readonly string[] _inThisListOnly = new string[] { "VA", "MA" }; 

    public void foo() 
    { 
     var result = (
      from o in Orders 
      where _inThisListOnly.Contains(o.State) 
      select o 
     ) 
     .ToDictionary(o => o.Id, o => o); 
    } 
} 

私のプログラムは、悪名高い「ローカルコレクションを持つクエリはサポートされていません」例外を投げ始めます。誰かが行動に説明をしますか?ある意味では、inThisListOnlyよりもローカルより少ない_inThisListOnlyではありませんか?

ありがとうございました。

+0

クエリで何をしているのかを示す必要があります。そのままにしておけば、クエリを繰り返し実行することはないので、何を表示しても何もスローされません。 – jason

+0

次のステップは反復です。私はその結果を辞書に入れます。 –

+0

@キャンディーレプロ! http://ideone.com/RG6Pz –

答えて

0

オーダーコレクションの種類は何ですか?それはローカルの列挙型またはlinq SQLのテーブルを提供していますか?

+0

Ordersは、linq to sqlが提供するテーブルであるDatabaseContext.Ordersです。 –

+0

私はあなたのエラーを再現するために管理していませんでした:(すべて正常に実行されます) – Mic

+0

この問題に関する既存のトピックがあります...それらをチェックしてください! – Mic

関連する問題