2010-04-16 67 views
1

請原諒我無法更準確地標題。LINQ to SQL:屬性的可重用表達式?

基本上,我有三個LINQ對象鏈接到表。一個是產品,另一個是公司,最後一個是映射表映射,以存儲公司銷售哪些產品以及該公司使用哪個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對象中,這樣我就可以使用註釋行而不是惱人的嵌套三元運算符語句來實現整潔和可重用性。

因此,我增加了以下屬性商品對象:

public string BackendProductID 
{ 
    get 
    { 
     if (Mappings.Count == 0) return "None"; 
     if (Mappings.Count > 1) return "Multiple"; 
     return Mappings.First().BackendProductID; 
    } 
} 

名單仍然是相同的,但現在這樣的查詢爲每一個產品得到它的BackendProductID。代碼更整潔,可重用,但性能現在非常糟糕。

我需要的是某種表達式或委託,但是我無法繞頭寫一篇。它總是以最終的方式查詢每一件產品。

任何幫助,將不勝感激!

回答

1

我不能給你一個比你們更好的解決方案,但作爲一種解決方法......

也許你可以在數據庫中創建一個視圖,您可以拖動視圖,你通常會做與設計師一張桌子。您可以從視圖中讀取數據。我認爲這會提高表現。

祝你好運。