吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1010|回复: 15
收起左侧

[求助] 两个DataTable求和

[复制链接]
7R903 发表于 2021-11-29 17:06
两个DataTable求和
DataTable1数据为
{
”测试1“,10,
"测试2",20,
"测试3",30,
"测试4",34
}

DataTable2数据为
{
”测试1“,10,
"测试2",20,
"测试3",30,
"测试4",40,
”测试5“,50
}

得出结果为
{
”测试1“,20,
"测试2",40,
"测试3":60,
"测试4":74,
"测试5",50
}

循环两个DataTable后,测试1到测试4的结果都出来了,如何得出测试5的数据?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

MartinLee 发表于 2021-11-29 17:14
根据length 大的循环,嘻嘻
打酱油的笨小孩 发表于 2021-11-29 17:21
xiaolong23330 发表于 2021-11-29 17:53
你比较下DataTable中的元素个数,用大的元素个数来循环
shabaobao 发表于 2021-11-29 18:08
本帖最后由 shabaobao 于 2021-11-29 18:44 编辑

不知道你需要什么编程语言实现,先用js给你实现一下吧,浏览器控制台可以直接看结果
[JavaScript] 纯文本查看 复制代码
function sum(...args) {
  let
    data = Object.assign({}, ...args),
    keys = Object.keys(data);
  keys.forEach(key => {
    data[key] = 0
    args.forEach(item => {
      if (!isNaN(item[key])) {
        data[key] += item[key]
      }
    })
  })
  return data
}
var
  a = {
    "测试1": 10,
    "测试2": 20,
    "测试3": 30,
    "测试4": 34
  },
  b = {
    "测试1": 10,
    "测试2": 20,
    "测试3": 30,
    "测试4": 40,
    "测试5": 50
  },
  c = {
    "测试6": 0
  };
sum(a, b, c)
shabaobao 发表于 2021-11-29 18:10
本帖最后由 shabaobao 于 2021-11-29 18:45 编辑

运行结果截图
1638182660631.jpg
 楼主| 7R903 发表于 2021-11-29 20:40

我用c#写的,写到这里没有思路了
如果在if后加个语句继续添加就会有很多重复的数据
[C#] 纯文本查看 复制代码
var li = new List<listParms>();
            for (int i = 0; i < dt2.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    if (dt2.Rows[i]["jz"].ToString() == dt.Rows[j]["jz"].ToString())
                    {
                        li.Add(new listParms { Name = dt2.Rows[i]["jz"].ToString(), Count = Convert.ToInt32(dt2.Rows[i]["num"].ToString()) + Convert.ToInt32(dt.Rows[j]["num"].ToString()) });
                        break;
                    }
                }
            }
 楼主| 7R903 发表于 2021-11-29 21:05
xiaolong23330 发表于 2021-11-29 17:53
你比较下DataTable中的元素个数,用大的元素个数来循环

是先循环大的,再循环小的啊,还是我没理解透
 楼主| 7R903 发表于 2021-11-29 21:14
本帖最后由 cn005897 于 2021-11-29 21:16 编辑
cn005897 发表于 2021-11-29 20:40
我用c#写的,写到这里没有思路了
如果在if后加个语句继续添加就会有很多重复的数据
[] 纯文本查看 复制代码
 楼主| 7R903 发表于 2021-11-29 21:16
代码看不见了,手动一波
var li = new List<listParms>();
            for (int i = 0; i < dt2.Rows.Count; i++)
            {
                for (int j = 0; j <= dt.Rows.Count; j++)
                {
                    if (dt2.Rows[i]["jz"].ToString() == dt.Rows[j]["jz"].ToString())
                    {
                        li.Add(new listParms { Name = dt2.Rows[i]["jz"].ToString(), Count = Convert.ToInt32(dt2.Rows[i]["num"].ToString()) + Convert.ToInt32(dt.Rows[j]["num"].ToString()) });
                        
                       
                        if (dt.Rows.Count != 1) { dt.Rows.RemoveAt(j); }
                        break;
                    }
                    else
                    {
                        li.Add(new listParms { Name = dt2.Rows[i]["jz"].ToString(), Count = Convert.ToInt32(dt2.Rows[i]["num"].ToString()) });
                        dt.Rows.RemoveAt(j);
                        break;
                    }
                }
            }
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.