4

我有以下 linq -

var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p).Sum(i => i.Quantity);

我收到错误 -

不支持“求和”方法

谁能告诉我原因和需要的更改。

4

2 回答 2

11
var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p.Quantity).Sum();

这应该有效 - 对'Quality'列执行求和,该列是使用select语句获取的。那是因为Sum(expression)LINQ to Entities 不支持,但标准支持Sum()

整个工作应该由数据库完成,因此应用程序不会检索任何行 - 只是单个数字。

于 2013-01-08T09:09:04.410 回答
3

在调用 Sum 之前使用Enumerable.ToList将查询转换为集合。

var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p).ToList().Sum(i => i.Quantity);

编辑:这将带来所有行并将应用总和,这不是有效的方式。由于您需要汇总数量,您可以选择数量而不是行。

var quantity = (from p in context.StoreInventory
                         where p.BookId== BookId
                                && p.StoreAddress == StoreAddress
                         select p.Quantity).Sum();
于 2013-01-08T09:05:35.653 回答