C# 如何快速比对多个近似表格

莫名其妙的人参果 2019-08-01 09:19:02
表的列头 都一样 序号 物品 材质 单价 ;然后多个表大部分 物品 材质 是共用, 有个别表可能多一些不同 的物品 或者 同物品 不同材质的东西,然后每个表 和其他的表比较 可能出现 同物品 同材质,但是单价不一样的情况,但是自身表中不会有同物品 同材质的东西出现;

我现在要把多个表 整合成1个表 然后 按 序号 物品 材质 单价1 单价2 单价3 ....排出来。
我现在的做法是 新设了一个字符串组 大小等于 多个表的行数和 ,单个字符串对应 每份表的 物品+材质;然后排除相同字符串 ,得到的字符串组 作为 整合表的 物品+材质,然后
                
for (int i=0;i<zongbiaot.Length;i++)
{
for(int ii=0;ii<danjiabiaol.Length;ii++)
{
for(int ia=0;ia<danjiabiaob[ii].Rows.Count;ia++)
{

if( dtb_a.Rows[i][1].ToString()== danjiabiaob[ii].Rows[ia][1].ToString())
{
if(dtb_a.Rows[i][2].ToString() == danjiabiaob[ii].Rows[ia][2].ToString())
{

dtb_a.Rows[i][3 + ii] = danjiabiaob[ii].Rows[ia][3];

}
}

}

}
}

这样把全部单价合并到了一份表上面;然后问题出来了 .....由于每份表都有 几千 到1W 的单价数,合成总表会卡好久 , 请问怎么解决.
...全文
180 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
谢谢,好久没登录了,忘记结贴
wanghui0380 2019-08-02
  • 打赏
  • 举报
回复
https://www.cnblogs.com/rongyux/p/5537028.html 这个例子是演员,导演,片子 你的是物品,材料,单价,用图数据库查就是查一下 物品->材料->单价 这种边有多少个 当然另一个好处是,你可以从任意节点查,比如这个材料有多少种单价,这个材料被多少物品使用。 用来做物料清单(BOM)绝配
PaulyJiang 2019-08-02
  • 打赏
  • 举报
回复
直接用Linq就可以解决了
wanghui0380 2019-08-02
  • 打赏
  • 举报
回复
实际上这种玩意用图数据库,比用关系数据库要强,用图数据库只需要查有多少个不同的path就好
XXXXn帅气 2019-08-02
  • 打赏
  • 举报
回复
如果数据是从数据库查出来的 可以这样处理
wanghui0380 2019-08-02
  • 打赏
  • 举报
回复
额,也许看问题的方式不一样吧。 表结构一样,说明可以直接union,所以不需要自己玩。全部导入到一张表里,然后就是开窗排序。 这玩意不用动代码的,直接导入数据库,然后写两句sql就成
XXXXn帅气 2019-08-02
  • 打赏
  • 举报
回复
合并那里写的有点问题 大意了
XXXXn帅气 2019-08-02
  • 打赏
  • 举报
回复
六万条数据 大概在十秒左右 不知道是不是你要的这种

  • 打赏
  • 举报
回复
引用 2 楼 wilson1966 的回复:
无解,只能等它跑完
1楼 的方法 应该可行,我先试试
  • 打赏
  • 举报
回复
引用 1 楼 weixin_38641834 的回复:
多线程分段合并呗,简单暴力
懂了,感谢
wilson1966 2019-08-02
  • 打赏
  • 举报
回复
无解,只能等它跑完
Eason0807 2019-08-01
  • 打赏
  • 举报
回复
多线程分段合并呗,简单暴力

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧