LINQ加入多个条件

时间:2011-10-30 07:06:27

标签: linq

我已经形成了以下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();

1 个答案:

答案 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关系,那么您将不得不通过这些关系而不是点到单个属性,因为您将拥有子对象的集合而不是单个子对象。您可能会发现将查询分解为较小的部分以缩小问题根源是有帮助的。