Asp.net WHERE子句中的LINQ-CASE语句

Asp.net WHERE子句中的LINQ-CASE语句,asp.net,linq,linq-to-entities,Asp.net,Linq,Linq To Entities,我对林克是个新手。我有一个低于linq的问题 var entities = context.MessagingTemplateEntities .Where(m => m.PartyId == partyId && m.MessageTemplateTypeId == messagingTemplateTypeId &

我对林克是个新手。我有一个低于linq的问题

var entities = context.MessagingTemplateEntities
                      .Where(m => 
                          m.PartyId == partyId && 
                          m.MessageTemplateTypeId == messagingTemplateTypeId &&
                          m.ProductTypePartyId == productTypePartyId);
在此查询中,如果productTypePartyId为0,则我不希望将其包含在&&条件中。那么如何根据值排除参数呢?

使用
&(m.ProductTypePartyId==ProductTypePartyId | | ProductTypePartyId==0)

而不是
&&m.ProductTypePartyId==ProductTypePartyId

不知道为什么人们总是强迫LINQ成为一行程序

var entities = context.MessagingTemplateEntities
                      .Where(m =>
                          m.PartyId == partyId && 
                          m.MessageTemplateTypeId == messagingTemplateTypeId &&
                          (productTypePartyId == 0 ? 
                              true : 
                              m.ProductTypePartyId == productTypePartyId));
var entities = context.MessagingTemplateEntities
                      .Where(m => 
                          m.PartyId == partyId && 
                          m.MessageTemplateTypeId == messagingTemplateTypeId);

if(productTypePartyId != 0)
   entities = entites.Where(m.ProductTypePartyId == productTypePartyId);

您自己决定哪一个更易于阅读。

当productTypePartyId为0时,这将不起作用,它将被添加到和条件中,并且由于表中没有productTypePartyId=0的记录,它将返回空实体。很抱歉,输入错误。编辑我的答案-从第二条中删除
m.