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);
我不知道如何使用查询表达式执行此操作。