使用LINQ计算SQL表格行数的总和?

3
在SQL数据库中有一个表格,如下所示:
SampleTable:
-----------------------
 id | number | price 
-----------------------
 1  |   3    | 300
 2  |   1    | 200
 3  |   5    | 100
 4  |   10   | 10
 5  |   30   | 30
 6  |   1    | 500
-----------------------

我想要像下面这样计算总价格:
in each row => var SumOfEachRow = number * price;
Total Price = sum of SumOfEachRow;

因此,总价将是3100。

现在,我想使用LINQ进行计算。 例如:

int TotalPrice = from q in SampleTable
                 select new
                 {
                    TotalPrice = q.number * q.price 
                 }.Sum();

上述代码返回了错误的结果!!!您能给我指导吗?谢谢。

2个回答

4

尝试:

decimal TotalPrice = SampleTable.Sum(q => q.number * q.price);

我之前进行了测试,它返回了一个异常算术溢出错误,将表达式转换为int数据类型。 - Mohammad Dayyan
那是因为你已经卖了很多物品 ;) 尝试将 TotalPrice 声明为 doubledecimal。答案已相应更新。 - Frédéric Hamidi
我测试了 double,但是我再次收到了异常。我已经使用 foreach 进行了测试。var query = SampleTable.Select(q=>q); foreach (var item in query) TotalPrice += item.number * item.price 它没有返回异常!!! - Mohammad Dayyan
q.price 必须是 decimal 类型。请尝试使用 decimal TotalPrice - Frédéric Hamidi

1

试试这个

  var TotalPrice = from q in SampleTable.AsEnumerable()
                         let y = Convert.ToInt32(q["number"]) * Convert.ToInt32(q["price"])
                         select y;

      int totalPrice =  TotalPrice.Sum();

好吧,这和之前的回答一样!有什么区别!!!另一方面,“SampleTable”默认是可枚举的。 - Mohammad Dayyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接