计算sql数据库中同一列中的所有行总数

时间:2012-04-18 00:19:11

标签: c# winforms linq-to-sql c#-4.0

我有一个名为expense的sql表,其中有一个名为cost的int列。在我的应用程序中,这个数据显示在一个网格上,每当我插入一个带有linq2sql插入的新行时,该网格就会刷新。我想要做的是在我的应用程序中有一个整数变量,它是每次插入行时cost列中所有字段的总和。

每次插入时,是否有一种简单的方法可以将这些字段与linq2sql相加。请尽量避免使用lambda,因为我尚未学习。

谢谢!

3 个答案:

答案 0 :(得分:2)

假设您使用查询语法而不是lambdas,这里是:

var totalCost = (from expensesRow in dataContext.Expenses
             select expensesRow.cost)
             .Sum();

其实与:

相同
var totalCost = dataContext.Expenses
                  .Sum(x => x.cost);

此处dataContext是您的Linq2Sql DataContext类的实例。

答案 1 :(得分:1)

你今天要学习lambdas。 http://www.theabsentmindedcoder.com/2010/06/linq-sum.html 正好你想要的东西,并使用一个非常简单的lambda到达那里。你可以通过让你的选择只收集你想要总结的一列整数来逃避没有lambda,但为什么额外的工作不能学习东西呢?

答案 2 :(得分:0)

假设我有一个名为users的表,其结构如下:

[Table users] -  id | username | points_awarded

然后,我可以通过运行查询找到我为每个用户授予的总分数:

SELECT SUM(points_awarded) as total_points FROM users

您还可以计算有多少用户的点数大于等于N.例如,说N = 500,那么我可以运行:

SELECT COUNT(id) as num_users_with_points FROM users WHERE points_award >= 500

退房:

http://dev.mysql.com/doc/refman/5.1/en/counting-rows.html
http://dev.mysql.com/doc/refman/5.0/en/func-op-summary-ref.html

了解更多信息。