我想知道最可維護的方法(如果存在)將實體條件存儲在參數中,以便在條件中的每個linq中重用它。如何存儲Linq條件屬性
假設有一個產品實體:
public class Product
{
public bool IsDiscontinued { get; set; }
public int UnitsInStock { get; set; }
}
我想添加到產品類,它包含的邏輯,以確定該產品是否有售或不是屬性IsOnSale。 在這個簡單的例子中,邏輯可以是:
IsOnSale = IsDiscontinued == false && UnitsInStock > 0
然後我應該能夠寫這種類型的LINQ查詢:
from p in context.Products
where p.IsOnSale == true
select p
溶液的目的應該是,如果在未來的邏輯來確定產品是否出售或不變(例如添加屬性IsBackOrderAllowed),我不必編輯任何地方的linq查詢,而只需更改IsOnSale屬性。
類似的問題已發佈here但似乎解決了一個更具體的問題。
+1 IMO,擴展方法是一個更優雅的解決方案。 – Yakimych 2011-03-16 11:04:21
我同意,我更喜歡使用與表達式相反的方法。你可以通過表達式來獲得更多,但它們往往會掩蓋代碼的含義。 – 2011-03-16 11:33:38
表達式解決方案似乎更通用(在撰寫更復雜的查詢時)。但我會用擴展方法解決一些更多的測試,也許我會理解爲什麼它更好... – EdoT 2011-03-16 11:45:48