LINQ - оператор CASE в предложении WHERE - PullRequest
2 голосов
/ 02 декабря 2011

Я совершенно новичок в LINQ. У меня есть запрос ниже linq

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

В этом запросе, если productTypePartyId равен 0, я не хочу включать его в условие && . Итак, как я могу исключить параметры на основе значений?

Ответы [ 3 ]

5 голосов
/ 02 декабря 2011

Не уверен, почему люди всегда заставляют LINQ быть одним лайнером.

var entities = context.MessagingTemplateEntities
                      .Where(m => 
                          m.PartyId == partyId && 
                          m.MessageTemplateTypeId == messagingTemplateTypeId);

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

Решите для себя, что читается с первого взгляда.

3 голосов
/ 02 декабря 2011
var entities = context.MessagingTemplateEntities
                      .Where(m =>
                          m.PartyId == partyId && 
                          m.MessageTemplateTypeId == messagingTemplateTypeId &&
                          (productTypePartyId == 0 ? 
                              true : 
                              m.ProductTypePartyId == productTypePartyId));
2 голосов
/ 02 декабря 2011

Использование && (m.ProductTypePartyId == productTypePartyId || productTypePartyId == 0) вместо && m.ProductTypePartyId == productTypePartyId

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...