2010-04-28 15 views
16

Ich habe diesen Fehler: Ein anonymer Typ kann nicht mehrere Eigenschaften mit dem gleichen Namen haben. Ob dies mit Alias ​​dh aufgelöst werden kann, ob ein Alias ​​in LINQ existiertanonymer Typ und mehrere Eigenschaften

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 zu treffen einreichen - Ich bin nicht sicher, was Sie fordern. Es ist richtig, dass ein anonymer Typ nicht mehrere Eigenschaften mit demselben Namen haben kann. Aber wie erstellen Sie Instanzen dieses Typs? Fragen Sie, ob LINQ automatisch einen Alias ​​erstellt? Wenn Sie einen Beispielcode haben, würde es helfen. Vielen Dank. –

Antwort

47

Sie müssen für die doppelten Eigenschaften alternative Namen geben. Zum Beispiel:

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

@johnskeet Zu einfach - danke –

2

Es ist ein confligt auf „Name“ Sie kartieren sowohl dt.Name und loc.Name, sowohl die der Compiler auf den „Namen“ zu setzen versucht Eigenschaft des Anon-Typ.

ändern Sie einen von ihnen in z.B. LoationName = loc.Name.

HTH

[Bearbeiten] Way zu spät :-)

Verwandte Themen