2010-04-28 127 views
16

我有這個錯誤:匿名類型不能有多個具有相同名稱的屬性。是否可以用別名解決,即,是否存在別名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

@ognjenb - 我不知道你在問什麼。確實,匿名類型不能具有多個具有相同名稱的屬性。但你如何創建這種類型的實例?你問是否LINQ會自動創建一個別名?如果你有一些示例代碼,它會有所幫助。謝謝。 – 2010-04-28 08:50:09

回答

47

您需要爲重複屬性提供備用名稱。例如:

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

@johnskeet太容易了 - 謝謝 – 2013-04-23 00:11:20

2

這是對「名」 你映射都dt.Name和loc.Name,這兩種編譯器試圖設置「名稱」的匿名類型的屬性confligt。

將其中一個改爲例如LoationName = loc.Name。

HTH

[編輯] 太晚打提交:-)