Невозможно создать постоянное значение типа "анонимный тип"

У меня два запроса linq. Я хочу использовать результат одного запроса в другом запросе.

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

Затем я использую эту переменную в другом запросе:

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, это даст мне правильный результат, но с join дает мне следующую ошибку:

ошибка: невозможно создать постоянное значение типа «анонимный тип». В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).


person user1562231    schedule 22.03.2013    source источник
comment
Где t2s во втором запросе?   -  person Denys Denysenko    schedule 10.04.2013


Ответы (2)


Вы уверены, что вам нужно присоединиться? Что насчет этого:

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.

person Phil    schedule 09.04.2013

Попробуйте изменить свои запросы следующим образом:

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 ...
person Magnus    schedule 09.04.2013