Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

anonymous type and multiple properties

Tags:

linq

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
                           };
like image 751
Ognjen Avatar asked Apr 28 '10 08:04

Ognjen


2 Answers

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
};
like image 89
Jon Skeet Avatar answered Oct 19 '22 10:10

Jon Skeet


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 :-)

like image 2
Roger Johansson Avatar answered Oct 19 '22 09:10

Roger Johansson