比较数据集或一个更好的主意(Compare dataset or a better idea)

2019-06-23 15:06发布

如何从相互比较的一个数据集的值。

第1集 [“适当的记录”]从SQL Server发出列名

 [id], [subsNumber]

第二数据集 [“适当和inproper记录”]从进展数据库来,与不同的列除1,其为subsNumber

我该如何去,使具有另一个数据集中的所有[subsNumber]从[“适当的记录”]从第二datset [“适当inproper记录”]匹配的记录?

要么

删除第二个数据集中的所有记录[“适当和inproper记录”],它不会在第一个数据集匹配“subsNumber”列

或任何其他的想法

基本上我如何从具有相同的“subsNumber”作为第1集第2集的所有记录

Answer 1:

关键是使用System.Data.DataRelation加入一个共同的列的2个数据表(或列)。

下面是从后得出一些代码KC的查看夏普博客

public DataTable GetImproperRecords(DataTable ProperRecords, DataTable ImproperRecords) {
  DataTable relatedTable = new DataTable("Difference");
  try {
     using (DataSet dataSet = new DataSet()) {
        dataSet.Tables.AddRange(new DataTable[] { ProperRecords.Copy(), ImproperRecords.Copy() });

        DataColumn properColumn = new DataColumn();
        properColumn = dataSet.Tables[0].Columns[1]; // Assuming subsNumber is at index 1

        DataColumn improperColumn = new DataColumn();
        improperColumn = dataSet.Tables[1].Columns[0]; // Assuming subsNumber is at index 0

        //Create DataRelation
        DataRelation relation = new DataRelation(string.Empty, properColumn, improperColumn, false);

        dataSet.Relations.Add(relation);

        //Create columns for return relatedTable
        for (int i = 0; i < ImproperRecords.Columns.Count; i++) {
           relatedTable.Columns.Add(ImproperRecords.Columns[i].ColumnName, ImproperRecords.Columns[i].DataType);
        }

        relatedTable.BeginLoadData();

        foreach (DataRow parentrow in dataSet.Tables[1].Rows) {
           DataRow[] childrows = parentrow.GetChildRows(relation);

           if (childrows != null && childrows.Length > 0)
              relatedTable.LoadDataRow(parentrow.ItemArray, true);

        }

        relatedTable.EndLoadData();

     }
  }
  catch (Exception ex) {
     Console.WriteLine(ex.Message);
  }

  return relatedTable;
}


Answer 2:

我解决了这个问题:

第1集 - >环throuhg并获得subsNumber

调用函数并传递subsNumber和第2集 - >到它,然后开始另一个循环的新的数据集

如果继续subsnumber不匹配,如果该数据subsNumber匹配工作像添加到SQLSERVER表等列

码:

 foreach (DataRow row in ecommDS.Tables["EcommData"].Rows)
 {           
     //string statCode = ""
     string prdCode = ""; //declaring var for getting string format from ecomm
     string checking = "";
     prdCode = row["PRD-CDE"].ToString();
     checking = row["SUBS-NUM"].ToString();

     if(checking != subsNum)
     {
         continue;
     }


Answer 3:

要获得所有从第二个数据集相匹配的第一个数据集的记录,这将是这样的记录:

IEnumerable的项目list3 = list2.Where(L2 => list1.Contains(L1 => l1.subsNumber == l2.subsNumber));

沿着这些线路的东西!



文章来源: Compare dataset or a better idea