Linq to SQL .Sum()没有组…进入

我有这样的事情:

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 with … into?

关于什么:

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

AsEnumerable有所不同,这个查询将在本地执行(Linq To Objects)。

您可以:

itemsCart.Select(C => c.Price).SUM();

只打一次db:

 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(); 

额外的往返保存是值得的:)

尝试:

 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(); 

因为您只会从数据库中检索一列。

试试这个:

 var itemsInCart = from o in db.OrderLineItems where o.OrderId == currentOrder.OrderId select o.WishListItem.Price; return ( Convert.ToDecimal( itemsInCart.Sum() ) ); 

我觉得它更简单!

到现在为止。

我知道这是一个老问题,但为什么你不能这样做:

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

我不知道如何使用查询表达式执行此操作。