yzf86211861 2024-12-31 17:16 采纳率: 0%
浏览 15

C#这Datatable怎么转换聚合得到新Datatable

最近做开始学做winform程序
我从后台 有这么一个 DATATABLE的数据结构,
ADO.net的

产线 机台 工序 物料号 物料描述 图纸
A 2 3 4 4描述 4图纸
A 2 3 4 4描述 4图纸
A 2 3 4 4描述 4图纸
A 3 3 4 4描述 4图纸
A 3 4 4 4描述 4图纸
B 3 ** 4 ** 5 5描述 5图纸

要加工成这样的数据,前面3列一样,合并成一条, 物料号一样 后面,物料描述和图纸肯定一样的.
A 2 3 4 4描述 4图纸
A 3 3 4 4描述 4图纸
A 3 4 4 4描述 4图纸
B 3 4 5 5描述 5图纸 。

加入我
DATATABLE dt=第一个表结构,
想得到
dttemp 第2个表结构
用C# 怎么实现。有人指导下嘛

  • 写回答

4条回答 默认 最新

  • 码农阿豪@新空间 新星创作者: 前端开发技术领域 2024-12-31 17:19
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    首先,我们可以使用 LINQ 来对 DataTable 进行操作,实现合并相同行的功能。以下是一个简单的示例代码:
    using System;
    using System.Data;
    using System.Linq;
    class Program
    {
        static void Main()
        {
            // 假设有一个 DataTable dt,包含了原始数据
            DataTable dt = new DataTable();
            dt.Columns.Add("产线", typeof(string));
            dt.Columns.Add("机台", typeof(int));
            dt.Columns.Add("工序", typeof(int));
            dt.Columns.Add("物料号", typeof(int));
            dt.Columns.Add("物料描述", typeof(string));
            dt.Columns.Add("图纸", typeof(string));
            // 假设已经填充了原始数据
            // 创建一个新的 DataTable dttemp,用于存储合并后的数据
            DataTable dttemp = new DataTable();
            dttemp.Columns.Add("产线", typeof(string));
            dttemp.Columns.Add("机台", typeof(int));
            dttemp.Columns.Add("工序", typeof(int));
            dttemp.Columns.Add("物料号", typeof(int));
            dttemp.Columns.Add("物料描述", typeof(string));
            dttemp.Columns.Add("图纸", typeof(string));
            // 使用 LINQ 查询语句对原始 DataTable 进行合并操作
            var query = from row in dt.AsEnumerable()
                        group row by new
                        {
                            产线 = row.Field<string>("产线"),
                            机台 = row.Field<int>("机台"),
                            工序 = row.Field<int>("工序"),
                            物料号 = row.Field<int>("物料号")
                        } into grp
                        select new
                        {
                            产线 = grp.Key.产线,
                            机台 = grp.Key.机台,
                            工序 = grp.Key.工序,
                            物料号 = grp.Key.物料号,
                            物料描述 = grp.First().Field<string>("物料描述"),
                            图纸 = grp.First().Field<string>("图纸")
                        };
            // 将结果写入新的 DataTable dttemp
            foreach (var item in query)
            {
                dttemp.Rows.Add(item.产线, item.机台, item.工序, item.物料号, item.物料描述, item.图纸);
            }
        }
    }
    

    以上代码演示了如何使用 LINQ 对 DataTable 进行合并操作,并将结果存储到新的 DataTable 中。您可以根据实际情况进行调整。希望对您有帮助。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月31日
  • 创建了问题 12月31日