我有这个错误:匿名类型不能有多个具有相同名称的属性。是否可以使用别名来解决这个问题,即LINQ中是否存在别名
var device_query = from d in DevicesEntities.device
join dt in DevicesEntities.devicetype on d.DeviceTypeId equals dt.Id
join l in DevicesEntities.location on d.Id equals l.DeviceId
join loc in DevicesEntities.locationname on l.LocationNameId equals loc.Id
where l.DeviceId == d.Id
select new {
d.Id,
d.DeviceTypeId,
d.SerialNumber,
d.FirmwareRev,
d.ProductionDate,
d.ReparationDate,
d.DateOfLastCalibration,
d.DateOfLastCalibrationCheck,
d.CalCertificateFile,
d.Notes,
d.TestReportFile,
d.WarrantyFile,
d.CertificateOfOriginFile,
d.QCPermissionFile,
d.Reserved,
d.ReservedFor,
d.Weight,
d.Price,
d.SoftwareVersion,
dt.Name,
dt.ArticleNumber,
dt.Type,
l.StartDate, //AS LastStartDate,
l.LocationNameId,
loc.Name //in this line I have problem
};
答案 0 :(得分:47)
您需要为重复的属性提供替代名称。例如:
select new {
// ... other properties here ...
dt.Name,
dt.ArticleNumber,
dt.Type,
LastStartDate = l.StartDate,
l.LocationNameId,
CurrentLocation = loc.Name
};
答案 1 :(得分:2)
这是“名字”的一个混乱 您正在映射dt.Name和loc.Name,这两者都是编译器尝试设置为匿名类型的“Name”属性。
将其中一个更改为例如LoationName = loc.Name。
HTH
[编辑] 提交太晚了提交: - )