2013-03-22 27 views
6

私は2つのlinqクエリを持っています。私は別のクエリで1つのクエリの結果を使用したい。'匿名型'の定数値を作成できません

var t2s = (from temp3 in _ent.Products      
      where temp3.Row_Num == 2 
      select new { temp3.ProductID }); 

それから私は別のクエリでは、このVARを使用します。私は、それ自体で最初のクエリを実行すると

var _query = (from P1 in _ent.brands 
       join temp2 in on 
        new { Produ_ID = (Int32?)P1.Prod_ID } 
        equals new { Produ_ID = (Int32?)temp2.ProductID } 
      ); 

それは私に正しい結果を与えます。私はjoinことなく、第2のいずれかを実行した場合、それは私に正しい結果が得られますが、joinで私に次のエラーを与える:

error: Unable to create a constant value of type 'Anonymous type'. Only primitive types ('such as Int32, String, and Guid') are supported in this context

+4

2番目のクエリの 't2s'はどこですか? –

答えて

3

あなたはよろしいです参加が必要ですか?これについてどうか:

var t2s = _ent.Products.Where(t => t.Row_Num == 1).Select(t =>t.ProductID); 

var _query = _ent.brands.Where(b => t2s.Contains(b.Prod_ID)); 

ProductIDおよび/またはProd_IDがnull可能かどうかによって、少し変更する必要があります。

2

は、次のようにクエリを変更してみてください:

var t2s = from temp3 in _ent.Products      
      where 
      temp3.Row_Num == 2 
      select temp3.ProductID; 

var _query = from P1 in _ent.brands 
      join temp2 in t2s on P1.Prod_ID equals temp2 
      select ... 
関連する問題