【发布时间】:2009-03-19 19:04:24
【问题描述】:
我不确定这个问题的答案是否已经存在,因为我无法弄清楚 Linq 中的哪种机制适用于这种情况,或者我是否只需要手动完成。
假设我有 2 张桌子:
------------Employees-------------
EmployeeID Name -other columns-
---------EmployeeSkills-----------
EmployeeID Skill -other columns-
因此每个员工可以拥有 0 个或多个技能。
我的目标是将这些信息提取到内存中的数据结构中,使用一个 sql 查询
class StaticEmployee
{
int EmployeeID;
string Name;
List<string> Skills;
}
List<StaticEmployee> employees = (???).ToList();
由于我的表关系已设置,我可以只获取员工表(从 db.Employees 中的员工选择员工),但是当我访问 EmployeeSkills 属性时,它将执行单独的查询每个员工记录,因为第一次查询没有返回该数据。
另外,就 Sql 而言,我想要做的是使用左连接运行查询:
SELECT Employees.EmployeeID, Employees.Name, EmployeeSkills.Skill FROM Employees LEFT JOIN EmployeeSkills ON Employees.EmployeeID=EmployeeSkills.EmployeeID
这将为我提供我的列表,但我需要手动将其整理到我的列表中,因为具有 2 项技能的员工将返回 2 行。 有这样的 Linq 操作吗? 下面的假设示例
from employee in db.Employees
select new
{
EmployeeID = employee.EmployeeID,
Name = employee.Name,
Skills = new List(
from employeeSkill in employee.EmployeeSkills
select employeeSkill.skill
)
}
【问题讨论】:
标签: linq-to-sql