V老弟 2024-03-19 09:47 采纳率: 13.8%
浏览 7

C# 如何高效比较DateTable和数组不同

C# 如何高效比较DateTable和数组不同
当DateTable不同时会进行删除
数组不同时会进行新增
但数组为二维数组 最内面一组内容有多个值,但对比就比第一位

  • 写回答

2条回答 默认 最新

  • 码农阿豪 Java领域优质创作者 2024-03-19 09:48
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    回答:
    1. 如何高效比较DataTable和数组不同? 要比较DataTable和数组是否不同,可以先将DataTable转换为数组,再进行比较。不过要注意数组和DataTable的元素类型要一致,否则需要进行类型转换。 比较数组不同可以使用Linq,大约的代码如下:
    var arr1 = new int[] { 1, 2, 3 };
    var arr2 = new int[] { 2, 3, 4 };
    var except1 = arr1.Except(arr2).ToArray(); // 输出: 1
    var except2 = arr2.Except(arr1).ToArray(); // 输出: 4
    var except3 = arr1.Intersect(arr2).ToArray(); // 输出: 2,3
    

    比较DataTable不同可以使用Linq和DataColumnCollection,大致的代码如下:

    var dt1 = new DataTable();
    dt1.Columns.Add("id", typeof(int));
    dt1.Columns.Add("name", typeof(string));
    dt1.Rows.Add(1, "alice");
    dt1.Rows.Add(2, "bob");
    var dt2 = new DataTable();
    dt2.Columns.Add("id", typeof(int));
    dt2.Columns.Add("name", typeof(string));
    dt2.Rows.Add(1, "alice");
    dt2.Rows.Add(3, "charlie");
    var except1 = dt1.AsEnumerable().Except(dt2.AsEnumerable(), DataRowComparer.Default).CopyToDataTable();
    // 输出: id=2,name=bob
    var except2 = dt2.AsEnumerable().Except(dt1.AsEnumerable(), DataRowComparer.Default).CopyToDataTable();
    // 输出: id=3,name=charlie
    var intersect = dt1.AsEnumerable().Intersect(dt2.AsEnumerable(), DataRowComparer.Default).CopyToDataTable();
    // 输出: id=1,name=alice
    
    1. 当数据不同时如何进行删除或新增? 如果数组和DataTable不同时需要进行删除和新增,可以先用上面的方法找出不同的元素,然后进行相应的操作。 从DataTable中删除元素,可以使用DataTable.Rows.Remove或DataTable.Rows.RemoveAt方法,例如:
    foreach (var row in except1.Rows)
    {
        dt1.Rows.Remove(row);
    }
    

    向数组中新增元素,可以使用Array.Resize或List.Add方法,例如:

    Array.Resize(ref arr1, arr1.Length + 1);
    arr1[arr1.Length - 1] = 4;
    
    var list1 = arr1.Cast<int>().ToList();
    list1.Add(4);
    arr1 = list1.ToArray();
    

    向DataTable中新增元素,可以使用DataTable.Rows.Add方法,例如:

    foreach (var row in except2.Rows)
    {
        var newRow = dt1.NewRow();
        newRow["id"] = row["id"];
        newRow["name"] = row["name"];
        dt1.Rows.Add(newRow);
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 3月19日

悬赏问题

  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?
  • ¥30 自适应 LMS 算法实现 FIR 最佳维纳滤波器matlab方案
  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动