2011-06-03 6 views
0

C'est ce que je suis:Comment améliorer la requête LINQ?

int? productID = (ClientProduct != null ? (int?)ClientProduct.ProductID : null); 

result = (from po in ((Chase_Media_Pro_Entity_Model)this.NavigationItem.ObjectContext).raPurchaseOrder_List 
        where po.ClientID == Client.CustomerID 
         && ((object.Equals(po.ClientProductID, productID)) || (po.ClientProductID == (productID ?? po.ClientProductID))) 
         && (po.Is_Active == (isActive ?? po.Is_Active)) 
         && (po.IsApproved == (isApproved ?? po.IsApproved)) 
        orderby po.Is_Active descending, po.IsApproved ascending 
        select po); 

Y at-il un moyen d'améliorer cette ligne:

&& ((object.Equals(po.ClientProductID, productID)) || (po.ClientProductID == (productID ?? po.ClientProductID))) 

C'était la seule façon que je pourrais obtenir les bons résultats.

+1

Quel est le type de 'ClientProduct.ProductID'? Votre code a l'air vraiment bizarre. –

+0

@Danny: int. Qu'est-ce qui te semble bizarre? Il ne fait que gérer les valeurs NULL. – Willem

+1

Alors, pourquoi utilisez-vous 'object.Equals' pour comparer deux entiers ... –

Répondre

1

Que diriez-vous

&& ((productID.HasValue && po.ClientProductID.HasValue) ? po.ClientProductID.Value = productID.Value : true) 
3
&& (!productID.HasValue || (productID == po.ClientProductID)) 
Questions connexes