微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将 List<DataTable> 中的单个元素与另一个 List<DataTable> 进行比较

如何解决将 List<DataTable> 中的单个元素与另一个 List<DataTable> 进行比较

我试图通过运行查询预更改并获取所有数据库值并将它们放入数据表来跟踪数据库中的更改。每一行都被放入自己的数据表中,然后数据表被添加到列表中。处理完用户更新后,将再次运行相同的过程。我最终得到了这样的结果:

|   | oldData<record "1"> | <record "2"> |  | newData<record "1"> | <record "2"> |
|:-:|:-------------------:|:------------:|::|:-------------------:|:------------:|
|   | record "1"          | record "2"   |  | record "1"          | record "2"   |
| a | 11330002            | 14740032     |  | 11330002            | 14740032     |
| b | null                | null         |  | E                   | E            |
| c | true                | true         |  | true                | true         |
| n | ...                 | ...          |  | ...                 | ...          |

我填充列表我使用以下方法预更改来获取旧数据。用户进行更改然后作为保存的一部分,在更新/插入 sql 语句运行后,我再次运行该方法获取更改后列表 newData。

public static List<DataTable> buildDataTable()
        {
            List<DataTable> JobNumberList = new List<DataTable>();

            string conString = "Data Source=nf-sql1;Initial Catalog=Tooling;Integrated Security=True";
            //List<DataTable> currentData = new List<DataTable>();
            DataTable currentData = new DataTable();

            using (sqlConnection con = new sqlConnection(conString))
            {
                con.open();
                foreach (string number in updateList)
                {
                    string selectQry = String.Format(@"SELECT *
                                            FROM Tooling.dbo.MoldingData
                                            WHERE JobNumber = {0}",number);

                    using (sqlCommand command = new sqlCommand(selectQry))
                    {
                        command.Connection = con;

                        var resault = command.ExecuteReader();
                        currentData.Load(resault);
                    }

                    JobNumberList.Add(currentData);
                }
                return JobNumberList;
            }
        }

目标是创建一个记录,显示 null (oldData.[b]) 更改为 E (newData.[b]) 并且 null (oldData.[b]) 更改到 E (newData.[b])。这只是将插入到 sql 表中的字符串中。那会说:

11330002 记录 b 从“空”更改为“E”。

14740032 记录 b 从“空”更改为“E”。

我知道我需要某种 foreach 循环来通过嵌套的 foreach 查看列表中的每个元素来查看 DataTable 中的每个元素。我正在努力让 Datatable 元素出来工作。到目前为止,这就是我所拥有的。

foreach(DataTable oldListElement in oldData)
        {
            foreach(DaTarow oldDTelement in oldListElement.Rows)
            {
                oldElement = oldDTelement[0].ToString();
                foreach(DataTable newListElelemt in newData)
                {
                    foreach(DaTarow newDTelement in newListElelemt.Rows)
                    {
                        newElement = newDTelement[0].ToString();
                        if (!oldElement.Equals(newElement))
                        {
                            changeString = String.Format("{0} changed to {1}",oldElement,newElement);
                            Console.WriteLine(changeString);
                        }

我接近了吗?这被嵌入到一个用 C# 编写的应用程序中。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。