我必须加入多个表格。这些表的每个表都有类似的数据。
ID
(table id for FK)
Name
Description
Owner
from d in Departments
join f in Functions on d.DepartmentID equals f.DepartmentID
join pg in Processes on f.FunctionID equals pg.FunctionID
select new { d.DepartmentID, f.Name, pg.Name }
这会抛出错误'匿名类型不能有多个具有相同名称的属性'
有没有更好的方法来加入这些表?
我应该Select new { d, f, pg }
吗?从中获取数据是否容易?
我对LINQ很新,所以感谢任何帮助。
答案 0 :(得分:3)
编译器根据您使用的属性创建匿名类型的属性。在您的情况下,您使用属性Name
两次。进入f.Name
后进入pg.Name
要修复它,您必须明确指定两个属性名称中的一个:
select new { d.DepartmentID, FunctionName = f.Name, ProcessName = pg.Name }
答案 1 :(得分:3)
您只需要为两个Name
属性指定唯一的名称。类似的东西:
from d in Departments
join f in Functions on d.DepartmentID equals f.DepartmentID
join pg in Processes on f.FunctionID equals pg.FunctionID
select new { d.DepartmentID, FName = f.Name, PGName = pg.Name }
如果您没有指定自己的名称,编译器将只使用属性的全名,但由于在这种情况下它们都只是Name
,它将生成错误。