【问题标题】:calculate total of rows all in the same column in sql database计算sql数据库中同一列中的总行数
【发布时间】:2012-04-18 00:19:11
【问题描述】:

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    假设您使用查询语法而不是 lambda,那么您是:

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

    其实是一样的:

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

    这里的 dataContext 是你的 Linq2Sql DataContext 类的一个实例。

    【讨论】:

    • @adam355 不客气。但是,请考虑学习 lambdas。 :)
    【解决方案2】:

    您今天开始学习 lambda。 http://www.theabsentmindedcoder.com/2010/06/linq-sum.html 正是你想要的,并使用一个非常简单的 lambda 来实现。通过让你的选择只收集你想要求和的一列整数,你可以在没有 lambda 的情况下逃脱,但为什么要做额外的工作来不学习呢?

    【讨论】:

      【解决方案3】:

      假设我有一个名为 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
      

      了解更多信息。

      【讨论】:

      • 这不是直接的 sql 查询吗?我正在使用 linq2sql
      猜你喜欢
      • 1970-01-01
      • 2019-03-27
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2020-03-12
      相关资源
      最近更新 更多