[英]LINQ to SQL: Reusable expression for property?
請原諒我說不出確切的標題。
基本上,我有三個鏈接到表的LINQ對象。 一個是產品,另一個是公司,最后一個是映射表Mapping,用於存儲公司銷售哪些產品以及該公司通過哪個ID引用此產品。
我現在正在檢索產品列表,如下所示:
var options = new DataLoadOptions();
options.LoadWith<Product>(p => p.Mappings);
context.LoadOptions = options;
var products = (
from p in context.Products
select new {
ProductID = p.ProductID,
//BackendProductID = p.BackendProductID,
BackendProductID = (p.Mappings.Count == 0)
? "None"
: (p.Mappings.Count > 1)
? "Multiple"
: p.Mappings.First().BackendProductID,
Description = p.Description
}
).ToList();
這將執行單個查詢以檢索我想要的信息。 但是我希望能夠將BackendProductID背后的邏輯移到LINQ對象中,以便可以使用注釋行而不是煩人的嵌套三元運算符,以保持整潔和可重用性。
因此,我將以下屬性添加到Product對象:
public string BackendProductID
{
get
{
if (Mappings.Count == 0) return "None";
if (Mappings.Count > 1) return "Multiple";
return Mappings.First().BackendProductID;
}
}
該列表仍然相同,但是現在它對每個單個產品進行查詢以獲取其BackendProductID。 該代碼更加整潔且可重用,但是現在的性能卻很糟糕。
我需要的是某種“表達”或“代表”,但我無法全神貫注地編寫一個。 仍然總是對每個產品進行查詢。
任何幫助,將不勝感激!
我無法為您提供比您更好的解決方案,但是作為一種解決方法...
也許您可以在數據庫中創建視圖,也可以像平時使用表一樣將視圖拖到設計器中。 您可以從視圖中讀取數據。 我認為它將改善性能。
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.