Таблица сотрудников
Employee_ID int
Employee_Name varchar (50)
Таблица продаж:
Sales_ID int
Employee_ID int
Sale_Amount money
Стандартный выбор SQL
Выберите
*
От
Сотрудник emp
левое внешнее соединение
Продажи с
на
s.Employee_ID = emp.Employee_ID
Стандартные результаты SQL (точные результаты, которые я хочу использовать с помощью Linq to Entites)
1 Emp1 1 1 150,00
1 Emp1 2 1 500,00
2 Emp2 3 2 250,00
3 Emp3 NULL NULL NULL
4 Emp4 NULL NULL NULL
5 Emp5 4 5 700,00
Теперь для решения Linq To Entities
Dim query = From emp In entiites.Employee _
From sales In emp.Sales _
Select _
emp, _
sales
Результат Linq To Entities (где Employee_ID 3 и 4)
1: Emp1: 150.0000
1: Emp1: 500.0000
2: Emp2: 250,0000
5: Emp5: 700,0000
Попробуйте это с Linq to Entities с левым внешним объединением:
Dim query = From emp In entiites.Employee _
Group Join sales In entiites.Sales _
On emp.Employee_ID Equals sales.Employee.Employee_ID _
Into sales_grp = Group _
From Sel_SalesGrp In sales_grp.DefaultIfEmpty() _
Select _
emp, _
Sel_SalesGrp
Тогда я получаю эту ошибку, используя DefaultIfEmpty:
LINQ to Entities не распознает метод «System.Collections.Generic.IEnumerable 1[m12Model.Sales] DefaultIfEmpty[Sales](System.Collections.Generic.IEnumerable
1 [m12Model.Sales])», и этот метод нельзя преобразовать в выражение хранилища.
Linq to Entites: не поддерживает DefaultIfEmpty ().