Linq для SQL. Сумма () без группы ... в - PullRequest
26 голосов
/ 13 марта 2009

У меня есть что-то вроде этого:

var itemsInCart = from o in db.OrderLineItems
                  where o.OrderId == currentOrder.OrderId
                  select new { o.OrderLineItemId, ..., ..., o.WishListItem.Price}

есть ли способ сделать

itemsCart.Sum() //not sure what to pass into the function

чтобы получить сумму o.WishListItem.Price или мне нужно получить другой iQueryable из базы данных с группой ... в?

Ответы [ 5 ]

59 голосов
/ 13 марта 2009

А как же:

itemsInCart.AsEnumerable().Sum(o=>o.Price);

AsEnumerable имеет значение, этот запрос будет выполняться локально (Linq To Objects).

16 голосов
/ 13 марта 2009

Вы можете:

itemsCart.Select (с => c.Price) .sum ();

Чтобы попасть в БД только один раз, сделайте:

var itemsInCart = (from o in db.OrderLineItems
                  where o.OrderId == currentOrder.OrderId
                  select new { o.OrderLineItemId, ..., ..., o.WishListItem.Price}
                  ).ToList();
var sum = itemsCart.Select(c=>c.Price).Sum();

Дополнительная сэкономленная поездка туда и обратно стоит того:)

7 голосов
/ 13 марта 2009

Попробуйте:

itemsCard.ToList().Select(c=>c.Price).Sum();

На самом деле это будет работать лучше:

var itemsInCart = from o in db.OrderLineItems
              where o.OrderId == currentOrder.OrderId
              select new { o.WishListItem.Price };
var sum = itemsCard.ToList().Select(c=>c.Price).Sum();

Поскольку вы будете получать только один столбец из базы данных.

1 голос
/ 09 июля 2014

Я знаю, что это старый вопрос, но почему вы не можете сделать это так:

db.OrderLineItems.Where(o => o.OrderId == currentOrder.OrderId).Sum(o => o.WishListItem.Price);

Я не уверен, как это сделать с помощью выражений запросов.

1 голос
/ 29 декабря 2013

Попробуйте это:

var itemsInCart = from o in db.OrderLineItems
              where o.OrderId == currentOrder.OrderId
              select o.WishListItem.Price;

return ( Convert.ToDecimal( itemsInCart.Sum() ) );

Я думаю, что это проще!

На данный момент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...