【问题标题】:LINQ Join with same Name on different tables在不同的表上使用相同名称的 LINQ 连接
【发布时间】:2014-12-31 00:25:39
【问题描述】:

我在加入 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
}

【问题讨论】:

    标签: .net linq


    【解决方案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 类型将生成相同的名称,因此会发生冲突,您需要分配单独的名称。

    【讨论】:

    • 如果实际属性名称没有冲突,则不应指定它们。
    • @HamletHakobyan - 是的,谢谢,已经更新,OP的问题一定是两个生成相同的名称,即o.BusinessUnitId.Idpri.ProductId.Id都引用了相同的名称id
    猜你喜欢
    • 2016-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多