Ognjen
Ognjen

Reputation: 1195

anonymous type and multiple properties

I have this error: An anonymous type cannot have multiple properties with the same name. Whether this can be resolved with alias ie, whether an alias exists in 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
                           };

Upvotes: 18

Views: 13383

Answers (2)

Roger Johansson
Roger Johansson

Reputation: 23224

It's a confligt on "Name" You are mapping both dt.Name and loc.Name, both which the compiler tries to set to the "Name" property of the anon type.

change one of them to e.g. LoationName = loc.Name.

HTH

[edit] Way too late to hit submit :-)

Upvotes: 2

Jon Skeet
Jon Skeet

Reputation: 1503829

You need to provide alternative names for the duplicate properties. For example:

select new {
   // ... other properties here ...
   dt.Name,
   dt.ArticleNumber,
   dt.Type,
   LastStartDate = l.StartDate,
   l.LocationNameId,
   CurrentLocation = loc.Name
};

Upvotes: 49

Related Questions