Linq to Sql, recuperando estructuras de datos anidados con una consulta
No estoy seguro de si ya existe una respuesta para esto, ya que no puedo entender qué mecanismo en Linq está destinado a esta situación, o si solo necesito hacerlo manualmente.
Digamos que tengo 2 tablas:
------------Employees-------------
EmployeeID Name -other columns-
---------EmployeeSkills-----------
EmployeeID Skill -other columns-
e modo que cada empleado puede tener 0 o más habilidades.
Mi objetivo es dibujar esta información en una estructura de datos en la memoria, utilizando una consulta sql
class StaticEmployee
{
int EmployeeID;
string Name;
List<string> Skills;
}
List<StaticEmployee> employees = (???).ToList();
Desde que mis relaciones con la mesa están configuradas, podría predecir la mesa de los empleados de empleado en db. Los empleados seleccionan empleado), sin embargo, cuando accedo a la propiedad EmployeeSkills, se ejecutará una consulta separada para cada registro de empleado ya que esos datos no se devolvieron con la primera consulta.
Alternativamente, y lo que quiero hacer en lo que respecta a SQL, es ejecutar una consulta con una combinación izquierda:
SELECT Employees.EmployeeID, Employees.Name, EmployeeSkills.Skill FROM Employees LEFT JOIN EmployeeSkills ON Employees.EmployeeID=EmployeeSkills.EmployeeID
Eso me dará mi lista, pero tendré que clasificarla manualmente en mi lista ya que un empleado con 2 habilidades devolverá 2 filas. @ ¿Hay una operación de Linq que hace esto? Ejemplo hipotético a continuación
from employee in db.Employees
select new
{
EmployeeID = employee.EmployeeID,
Name = employee.Name,
Skills = new List(
from employeeSkill in employee.EmployeeSkills
select employeeSkill.skill
)
}