我已经形成了以下LINQ查询,但它给出了错误
mcc_season不是mcc_product
中的属性
如何构建查询,其中我有两个WHERE
条件,并且来自连接中的不同实体
var guestCardProduct =
(from c in CrmOrgServiceContext.mcc_productpriceSet
join d in CrmOrgServiceContext.mcc_productSet
on c.mcc_product.Id equals d.mcc_productId
where d.mcc_producttype.Value == (int)mcc_product.mcc_producttypeOptionSet.GuestCard
&& c.mcc_season.Id == seasonId
select new
{
d.mcc_productId,
c.mcc_price
}).FirstOrDefault();
答案 0 :(得分:0)
您可以按如下方式重写它:
var guestCardProduct =
(from c in CrmOrgServiceContext.mcc_productpriceSet
where c.mcc_season.Id == seasonId
join d in CrmOrgServiceContext.mcc_productSet
on c.mcc_product.Id equals d.mcc_productId
where d.mcc_producttype.Value == (int)c.mcc_product.mcc_producttypeOptionSet.GuestCard
select new
{
d.mcc_productId,
c.mcc_price
}).FirstOrDefault();
我们假设mcc_productpriceSet与mcc_season和mcc_product之间存在1 - 0..1关系,并且mcc_product和mcc_producttypeOptionSet之间也存在1 - 0..1关系。如果这些关系之间存在1-n关系,那么您将不得不通过这些关系而不是点到单个属性,因为您将拥有子对象的集合而不是单个子对象。您可能会发现将查询分解为较小的部分以缩小问题根源是有帮助的。