2015-03-27 4 views
0

Я получаю следующую ошибку в слове «join» в приведенном ниже коде.Ошибка ввода типа в вызове 'Join'

Тип одного из выражений в предложении соединения неверен. Ошибка ввода типа в вызове 'Join'.

var organisationQuery = ClientDBContext.Organisations.Where(x => true); 

var orderGrouped = from order in ClientDBContext.Orders.Where(x => true) 
group order by order.OrganisationId into grouping 
select new { Id = grouping.Key.Value, OrderCount = grouping.Count() }; 

var orders = from og in orderGrouped 
join org in organisationQuery on og.Id equals org.Id 
select(x => new OrganisationOrdersReportPoco() 
{ 
    OrganisationNameThenCode = org.Name, 
    TotalOrders = og.OrderCount 
}); 

Я не вижу проблемы с присоединиться к статье? Кто-нибудь может посоветовать?

Редактировать: Это часть SQL, которую я пытаюсь написать как LINQ.

SELECT grp.OrganisationId, 
     grp.OrderCount, 
     organisations.Name 
FROM (select OrganisationId, 
       count(*) as OrderCount 
     from orders where 1 = 1 group by OrganisationId) grp 
LEFT OUTER JOIN organisations on grp.OrganisationId = organisations.OrganisationId 
WHERE 1 = 1 

У меня сложная ситуация, когда предложения по обоим заказам и организациям ... упрощены для этого примера.

+1

Где находится 'organizationationQuery'? –

+0

смотрите выше. – Beakie

ответ

0

(Кредит Георгием Nakeuri)

Я путает LAMBDA с выражениями LINQ.

Замена моего выбора с помощью этого решена.

select new OrganisationOrdersReportPoco() 
{ 
    OrganisationNameThenCode = org.Name, 
    TotalOrders = og.OrderCount 
}; 
2

Вы выбираете в анонимный тип в первом запросе:

var orderGrouped = .. 
    select new { Id = grouping.Key.Value, OrderCount = grouping.Count() }; 

Этот «разрывы» в связи с order.

join похоже, что он должен работать для Linq-to-Objects, но не может быть преобразован в SQL.

Вам придется устранить анонимный тип и как-то сделать более прямое соединение.

Интересно, почему вы не просто переходите от организаций? При правильном отображении с помощью СЧА свойств он должен выглядеть следующим образом:

from org in ClientDBContext.Organisations 
select(x => new OrganisationOrdersReportPoco() 
{ 
    OrganisationNameThenCode = org.Name, 
    TotalOrders = org.Orders.Count 
}; 

используя свойства Id должен быть немного сложнее, но по той же схеме.

+0

Как я могу присоединиться к организации из результата группы по порядку, например? – Beakie

+0

Попробуйте представить, как это должно быть преобразовано в SQL. 'orderGrouped' больше не может быть связан с таблицей. –

+0

Мне нужно применить на заказ предложение where, чтобы предложение не работало. В ClientDBContext.Orders есть предложения, которые здесь не показаны ... как и organisationQuery. (Я пытался упростить запрос перед отправкой.) – Beakie

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