Я получаю удовольствие от запроса LINQ и застрял в поиске правильного метода, чтобы получить количество связанных записей.LINQ Left Присоединиться к группе по и подсчитать
У меня есть ниже LINQ запрос и
var result = (from OR in orders
join OE in order_entries on OR.id equals OE.order_id into temp
from LOE in temp.DefaultIfEmpty()
group LOE by new {OR.user_id, OR.site } into g
select new {
col1 = g.Key.user_id,
col2 = g.Key.site,
count = g.Count() ,
cost = g.Sum(oe => oe.cost)
}
);
это превращается в
SELECT
1 AS [C1],
[GroupBy1].[K1] AS [user_id],
[GroupBy1].[K2] AS [site],
[GroupBy1].[A1] AS [C2],
[GroupBy1].[A2] AS [C3]
FROM (SELECT
[Extent1].[user_id] AS [K1],
[Extent1].[site] AS [K2],
COUNT(1) AS [A1],
SUM([Extent2].[cost]) AS [A2]
FROM [dbo].[orders] AS [Extent1]
LEFT OUTER JOIN [dbo].[order_entries] AS [Extent2] ON [Extent1].[id] = [Extent2].[order_id]
GROUP BY [Extent1].[user_id], [Extent1].[site]
) AS [GroupBy1]
Я пытаюсь для того чтобы достигнуть здесь заменить Count (1) с Count ([Extent2]. [ID]), поэтому в случае отсутствия записей, связанных с заказом, я хочу показать 0 вместо 1.
Может кто-нибудь помочь мне с обновлением запроса LINQ для достижения этого?
UPDATE:
заменить ниже будет возвращать результат за то, что я хотел, но это также превращает мой SQL запрос для выполнения медленнее ..
g.Where(i => i.orders != null).Count(),
Вы можете попробовать 'Count = g.Select (х => x.id) .Count()' или даже добавить 'Distinct', если он не Работа. – MarcinJuraszek
Привет, он не работает, так как у меня есть столбец id как в заказах, так и в таблице order_entries. Когда я добавил, что это не изменило какой-либо запрос, я думаю, что он думает, что идентификатор из таблицы заказов. – superted