2014-12-30 127 views
1
加入2個表時我有麻煩

,問題是上線LINQ加入具有相同名稱在不同的表

join pri in ProductPricingSet on new {o.BusinessUnitId.Id, opr.ProductNameId.Id} equals new {pri.BusinessUnitId.Id, pri.ProductId.Id`} 

即時得到「獲得」匿名類型不能有多個同名的屬性「

我試圖重新命名它做沒有運氣,還有什麼其他的選擇是有

from o in OrderSet 
join opr in OrderProductSet on o.Id equals opr.OrderId.Id 
join pri in ProductPricingSet on new {o.BusinessUnitId.Id, opr.ProductNameId.Id} equals new {pri.BusinessUnitId.Id, pri.ProductId.Id} 
where o.Name.Equals("OE-000004") 
select new { 
o.name, 
opr.ProductName, 
opr.Quantity, 
pri.SlipDiscount, 
pri.FinalPrice 
} 

回答

1

試試這個: -

from o in OrderSet 
    join opr in OrderProductSet on o.Id equals opr.OrderId.Id 
    join pri in ProductPricingSet on 
    new { BusinessUnitId = o.BusinessUnitId.Id, ProductNameId = opr.ProductNameId.Id}  
    equals new { BusinessUnitId = pri.BusinessUnitId.Id, ProductNameId = pri.ProductId.Id} 
    where o.Name.Equals("OE-000004") 
    select new 
      { 
       o.name, 
       opr.ProductName, 
       opr.Quantity, 
       pri.SlipDiscount, 
       pri.FinalPrice 
      } 

您正在使用的anonymous類型將生成相同的名稱,因此發生衝突,您需要指定單獨的名稱。

+0

如果您在實際屬性名稱中沒有碰撞,則不應指定它們。 –

+0

@HamletHakobyan - 是的,謝謝,已更新,OP的問題必須是兩個生成相同的名稱,即'o.BusinessUnitId.Id'&'pri.ProductId.Id'都引用相同的名稱'id'。 –

+1

非常感謝Rahul! – mauroneto

相關問題