C# 如何改进LINQ查询?

C# 如何改进LINQ查询?,c#,linq,linq-to-entities,C#,Linq,Linq To Entities,这就是我得到的: 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.Custo

这就是我得到的:

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)))
这是我得到正确结果的唯一方法。

怎么样

&& ((productID.HasValue && po.ClientProductID.HasValue) ? po.ClientProductID.Value = productID.Value : true)
怎么样

&& ((productID.HasValue && po.ClientProductID.HasValue) ? po.ClientProductID.Value = productID.Value : true)

ClientProduct.ProductID
的类型是什么?你的代码看起来很奇怪。@Danny:int。你觉得什么奇怪?它只是处理空值。那么为什么要使用
object.Equals
来比较两个整数呢?
ClientProduct.ProductID
的类型是什么?你的代码看起来很奇怪。@Danny:int。你觉得什么奇怪?它只是处理空值。那么为什么要使用
object.Equals
来比较两个整数呢。。。