Как улучшить запрос LINQ? - PullRequest
0 голосов
/ 03 июня 2011

Вот что я получил:

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);

Есть ли способ улучшить эту строчку:

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

Это был единственный способ получить правильные результаты.

Ответы [ 2 ]

3 голосов
/ 03 июня 2011
&& (!productID.HasValue || (productID == po.ClientProductID))
1 голос
/ 03 июня 2011

Как насчет

&& ((productID.HasValue && po.ClientProductID.HasValue) ? po.ClientProductID.Value = productID.Value : true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...