2014-12-30 94 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

相关问题