2010-04-28 25 views
16

Tengo este error: un tipo anónimo no puede tener varias propiedades con el mismo nombre. Si esto se puede resolver con el alias es decir, si existe un alias en LINQtipo anónimo y propiedades múltiples

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

@ognjenb - No estoy seguro de lo que están pidiendo. Es cierto que un tipo anónimo no puede tener múltiples propiedades con el mismo nombre. Pero, ¿cómo estás creando instancias de ese tipo? ¿Estás preguntando si LINQ creará automáticamente un alias? Si tienes algún código de muestra, sería útil. Gracias. –

Respuesta

47

Es necesario proporcionar nombres alternativos para las propiedades duplicadas. Por ejemplo:

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

@johnskeet Demasiado fácil - gracias –

2

Es un confligt en "Nombre" que está asignando tanto dt.Name y loc.Name, tanto las que el compilador intenta establecer la propiedad "Name" del tipo anon.

cambie una de ellas a p. Ej. LoationName = loc.Name.

HTH

[editar] demasiado tarde para golpear presentar :-)

Cuestiones relacionadas