LINQ在不同的表上使用相同的名称加入

时间:2014-12-30 12:54:48

标签: .net linq

我在加入2张桌子时遇到了麻烦,问题就在这个问题上

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 个答案:

答案 0 :(得分: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类型将生成相同的名称,因此发生冲突,您需要指定单独的名称。