2015-12-29 2 views
0

Я пытаюсь выяснить, как объявить объект объединения. Я понимаю, что я могу использовать слово var и делать с ним, но я хочу полностью понять тип возвращаемого объекта и как я объявляю такой объект. Вот мой пример, что я пытаюсь сделать работу:EF6 Тип Присоединиться

IQueryable<TeamMember, Member> j = 
       Db.TeamMembers.Join(Db.Users, 
       c => c.MemberId, 
       cm => cm.Id, 
       (c, cm) => new { TeamMember = c, Member = cm }) 
       .Where(m => m.TeamMember.TeamId == team.Id && !m.TeamMember.MemberId.Equals(team.CaptainId)); 

Однако приведенный выше код не работает, то ошибка, что я получаю

Неверное количество параметров типа.

Как бы я выполнил вышеуказанное?

+0

Вы можете позволить Intellisense выполнять работу за вас. Используйте 'var', возможно, скомпилируйте и наведите указатель мыши на ключевое слово' var' (а не на имя переменной). Всплывающая подсказка будет содержать тип переменной. –

ответ

0

IQueryable принимает только 1-го типа (IQueryable<T>)

Это объясняет сообщение об ошибке вы имеете.

В вашем JOIN запросе, вы возвращения anonymous типа (источник: https://msdn.microsoft.com/en-sg/library/bb397696.aspx), так что вы можете использовать не

  • IQueryable<object> j =
  • IQueryable<dynamic> j =
  • var j =

Там нет способ узнать тип с вашим текущим кодом, но вы всегда можете создать другую модель и использовать ее

+0

Я пытался избежать создания другого объекта, если можно, но похоже, что я должен. – Bojan

+0

@Bagzli: прекрасно создавать новый объект только для показа (ViewModel) или для цели передачи (DataTransferObject) –

Смежные вопросы