Как я могу добавить дополнительный объект к результатам запроса LINQ? - PullRequest
0 голосов
/ 18 ноября 2008

У меня есть следующий код, к которому мне нужно добавить дополнительный объект после получения результатов из базы данных. Любые идеи о том, как я мог бы к этому?

   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;
}

Ответы [ 2 ]

1 голос
/ 18 ноября 2008

Использование 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 голосов
/ 18 ноября 2008

Это может быть решением;

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...