Na warsztat weźmiemy bazę danych AdventureWorksLT2008R2 (dostępna do zainstalowania jako sample do SQL Server 2008 R2) i proste zapytanie, którego celem jest wykazanie kategorii dla których nie ma żadnych produktów:
SELECT pc.Name
FROM SalesLT.ProductCategory pc LEFT JOIN SalesLT.Product p ON pc.ProductCategoryID = p.ProductCategoryID
WHERE p.ProductID IS NULL
FROM SalesLT.ProductCategory pc LEFT JOIN SalesLT.Product p ON pc.ProductCategoryID = p.ProductCategoryID
WHERE p.ProductID IS NULL
Jak przełożyć to zapytanie na LINQ?
Code:
Wykorzystujemy tutaj tzw. Grouped Join.
Zgodnie z tym co można znaleźć na MSDN, Grouped Join łączy wszystkie elementy kolekcji pierwszej z pasującymi w drugiej. Oznacza to, że jeżeli w drugiej kolekcji nie będzie elementów pasujących do elementów z pierwszej kolekcji, w wyniku otrzymamy element pierwszej kolekcji bez z pustym zbiorem elementów z drugiej kolekcji.
Brak komentarzy:
Prześlij komentarz