我对LINQ很新。我有一个下面的linq查询
var entities = context.MessagingTemplateEntities
.Where(m =>
m.PartyId == partyId &&
m.MessageTemplateTypeId == messagingTemplateTypeId &&
m.ProductTypePartyId == productTypePartyId);
在此查询中,如果 productTypePartyId 为0,则我不希望将其包含在&&
答案 0 :(得分:5)
不确定为什么人们总是强迫LINQ成为一个衬里。
var entities = context.MessagingTemplateEntities
.Where(m =>
m.PartyId == partyId &&
m.MessageTemplateTypeId == messagingTemplateTypeId);
if(productTypePartyId != 0)
entities = entites.Where(m.ProductTypePartyId == productTypePartyId);
自己决定一目了然的可读性。
答案 1 :(得分:3)
var entities = context.MessagingTemplateEntities
.Where(m =>
m.PartyId == partyId &&
m.MessageTemplateTypeId == messagingTemplateTypeId &&
(productTypePartyId == 0 ?
true :
m.ProductTypePartyId == productTypePartyId));
答案 2 :(得分:2)
使用&& (m.ProductTypePartyId == productTypePartyId || productTypePartyId == 0)
而不是&& m.ProductTypePartyId == productTypePartyId