1

我必须加入多个表。这些表的每个表都有相似的数据。

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 非常陌生,因此不胜感激。

4

2 回答 2

3

编译器根据您使用的属性创建匿名类型的属性。在您的情况下,您使用该属性Name两次。一进f.Name一进pg.Name
要修复它,您必须至少明确指定两个属性名称之一:

select new { d.DepartmentID, FunctionName = f.Name, ProcessName = pg.Name }
于 2013-05-06T15:57:45.250 回答
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 }

当您不指定自己的名称时,编译器将只使用属性的全名,但由于在这种情况下它们都是 just Name,因此会产生错误。

于 2013-05-06T15:57:55.693 回答