2008-11-18 75 views
0

我有下面的代碼,我需要添加一個額外的對象來從數據庫檢索結果後。任何想法,我可能如何呢?如何將其他對象添加到LINQ查詢的結果中?

public IEnumerable<ProdPriceDisplay> GetShopProductsPrices() 
{ 

    //ProdPriceDisplay ProdPrice = new ProdPriceDisplay(); 
    var Products = from shop in db.SHOPs 
        select new ProdPriceDisplay 
        { 
         ProdPrice = shop.S_NAME + " - £" + shop.S_PRICE 
        }; 

    // *** Want to add something like this:- 

    // Products.Add new ProdPriceDisplay { ProdPrice = "some additional text"; } 

    return Products; 
} 

回答

1

使用Enumerable.Concat

public IEnumerable<ProdPriceDisplay> GetShopProductsPrices() 
{ 
    var products = from shop in db.SHOPs 
        select new ProdPriceDisplay 
        { 
         ProdPrice = shop.S_NAME + " - £" + shop.S_PRICE 
        }; 

    return products.AsEnumerable() 
        .Concat(new [] { new ProdPriceDisplay 
          { ProdPrice = "some additional text"; }); 
} 

該上轉換到一個列表的好處是,結果仍然流,這樣你就不會最終獲取數據的完整副本。

編輯:你可以使用Enumerable.Repeat(new ProdPriceDisplay { ... }, 1)而不是數組,如果你想 - 但沒有太多的好處。

編輯:我添加了電話AsEnumerable(),基本上說,「在這一點上,我們不希望在數據庫中做其餘的操作 - 使他們本地。」

0

這可能是一個解決方案;

var productsAsList = Products.ToList(); 
productsAsList.Add(new ProdPriceDisplay { ProdPrice = "some additional text"; }); 

return productsAsList; // As your return type is IEnumarable, that won't be a problem; 
+0

這對我也很有用 - 謝謝。 – Ebircsa 2008-11-18 10:46:55

+0

是的,這是一個解決方案,但我建議Jon的,因爲他提到了它的好處。 – 2008-11-18 12:08:51

相關問題