簡體   English   中英

LINQ to SQL:屬性的可重用表達式?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM