Не удалось создать постоянное значение типа «Тип закрытия»

Вот моя ссылка на запрос объекта, и я получаю эту ошибку

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

Кто-нибудь знает, как это исправить или обходной путь.

PS. Я использую Linq to Entity, а не Linq to SQL

List<int> listint
List<int> listintTwo

  return (from oa in _entity.TableOne
          join cc in _entity.TableTwo on oa.TableSix.ColumnOne equals cc.TableSix.ColumnOne
          join os in _entity.TableThree on oa.TableThree.ColumnTwo equals os.ColumnTwo
          join cs in _entity.TableTwotatus on cc.TableTwotatus.ColumnThree equals cs.ColumnThree
          join app in _entity.TableFour on cc.TableFour.ColumnFour equals app.ColumnFour
          join cl in _entity.TableFive on app.TableFive.ColumnFive equals cl.ColumnFive
          where listint.Any(x =>x == cc.TableTwotatus.ColumnThree)
          && listintTwo.Any(x => x == os.ColumnTwo) && cc.TableSix.ColumnOne == ColumnOne 
          select new TableFive {ColumnFive = cl.ColumnFive, CompanyName = cl.CompanyName}).ToList();

person Eugene    schedule 17.02.2011    source источник


Ответы (2)


Попробуйте изменить звонки с Any(...) на Contains(...)

where listint.Contains(cc.TableTwotatus.ColumnThree)
&& listintTwo.Contains(os.ColumnTwo) && ...

Я почти уверен, что у вас проблемы с тем, что вы ссылаетесь на присоединенный объект из лямбда-выражений (действующих как замыкания).

person Chris    schedule 19.02.2011

Вы не можете запрашивать сущности со сложными типами. Итак, сначала получите результат от EF, а затем присоединитесь к своему сложному типу.

List<int> listint
List<int> listintTwo

return (from oa in _entity.TableOne
      join cc in _entity.TableTwo on oa.TableSix.ColumnOne equals cc.TableSix.ColumnOne
      join os in _entity.TableThree on oa.TableThree.ColumnTwo equals os.ColumnTwo
      join cs in _entity.TableTwotatus on cc.TableTwotatus.ColumnThree equals cs.ColumnThree
      join app in _entity.TableFour on cc.TableFour.ColumnFour equals app.ColumnFour
      join cl in _entity.TableFive on app.TableFive.ColumnFive equals cl.ColumnFive).ToList().
      where listint.Any(x =>x == cc.TableTwotatus.ColumnThree)
      && listintTwo.Any(x => x == os.ColumnTwo) && cc.TableSix.ColumnOne == ColumnOne 
      select new TableFive {ColumnFive = cl.ColumnFive, CompanyName = cl.CompanyName}).ToList();</pre>
person user1553525    schedule 11.11.2014