Hãy nói rằng tôi có SQL này:LINQ - Left Join, Nhóm By, và Đếm
SELECT p.ParentId, COUNT(c.ChildId)
FROM ParentTable p
LEFT OUTER JOIN ChildTable c ON p.ParentId = c.ChildParentId
GROUP BY p.ParentId
Làm thế nào tôi có thể dịch này vào LINQ to SQL? Tôi đã bị mắc kẹt tại COUNT (c.ChildId), SQL được tạo luôn luôn có vẻ như đầu ra COUNT (*). Dưới đây là những gì tôi đã đạt được:
from p in context.ParentTable
join c in context.ChildTable on p.ParentId equals c.ChildParentId into j1
from j2 in j1.DefaultIfEmpty()
group j2 by p.ParentId into grouped
select new { ParentId = grouped.Key, Count = grouped.Count() }
Cảm ơn bạn!
OK, điều đó có hiệu quả nhưng tại sao? Bạn nghĩ thế nào về nó? Làm thế nào để không tính giá trị null cho chúng ta giống như COUNT (c.ChildId)? Cảm ơn. – pbz
Đây là cách SQL hoạt động. COUNT (tên trường) sẽ đếm các hàng trong trường đó không phải là rỗng. Có lẽ tôi không nhận được câu hỏi của bạn, xin vui lòng làm rõ nếu đó là trường hợp. –
Tôi đoán tôi luôn luôn nghĩ về nó trong việc đếm các hàng, nhưng bạn là chính xác, chỉ có các giá trị không null được tính. Cảm ơn. – pbz