c# - 如何获取数据表各列的绝对值之和

标签 c# asp.net datatables

我有以下代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.Data;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //Your code goes here         
            DataTable dt = new DataTable();
            dt.Columns.Add("Column1");
            dt.Columns["Column1"].DataType = typeof(Int32);
            dt.Rows.Add(1);
            dt.Rows.Add(2);
            dt.Rows.Add(-1);
            int a = Convert.ToInt32(dt.Compute("SUM(Column1)", "Column1 < 10"));
            Console.WriteLine(a);
        }
    }
}

它将给 op 作为 2,+ve no 将被添加,-ve one 将被减去。我需要 4 个作为 OP。我的意思是所有的abs值。怎么做?

最佳答案

你的问题有点模糊。想象一下你有

 -20, 1, -2 

如果您想要 3 == 1 + |-2| (请注意,-20排除,我们'通过绝对值进行过滤)您可以放置​​Linq,它看起来非常直接

var result = dt
  .AsEnumerable()
  .Select(record => Math.Abs(Convert.ToInt32(record["Column1"])))
  .Where(item => item < 10)
  .Sum();

如果你想要23 == |-20| + 1 + |-2| (请注意,-20保留,并且我们按进行过滤)您可以将

var result = dt
  .AsEnumerable()
  .Select(record => Convert.ToInt32(record["Column1"]))
  .Where(item => item < 10)
  .Sum(item => Math.Abs(item));

编辑:在复杂查询中(请参阅下面的评论)我建议使用匿名类:

var result = dt
  .AsEnumerable()
  .Select(record => new {
     Column1 = Convert.ToInt32(record["Column1"]),
     Column2 = Convert.ToString(record["Column2"]) }) 
  .Where(item => item.Column2 == "A" || item.Column2 == "B")
  .Where(item => item.Column1 < 10) 
  .Sum(item => Math.Abs(item.Column1));

关于c# - 如何获取数据表各列的绝对值之和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40716003/

相关文章:

c# - 使用 DDD 和 Azure 进行优雅的异常处理

asp.net - HTML <td> 标签的样式属性不符合宽度设置

javascript - 如何在 jQuery 数据表中获取多个复选框选中的值

javascript - Laravel yajra/Datatables 操作删除不起作用

c# - 无法在列表中将类型 'uint' 隐式转换为 'T'(来自类模板)

c# - 当一个接口(interface)从另一个接口(interface) "inherits"时,你怎么调用它?

c# - 当我在接口(interface)方法调用中忘记 `await` 时没有警告

c# - 仅使用 url 嵌入视频

asp.net - 如何在 JavaScript 中找到 ASP.NET TreeView 节点的父节点?

datatables - 从 jQuery 数据表中的导出中排除列