如何从相互比较的一个数据集的值。
第1集 [“适当的记录”]从SQL Server发出列名
[id], [subsNumber]
第二数据集 [“适当和inproper记录”]从进展数据库来,与不同的列除1,其为subsNumber
我该如何去,使具有另一个数据集中的所有[subsNumber]
从[“适当的记录”]从第二datset [“适当inproper记录”]匹配的记录?
要么
删除第二个数据集中的所有记录[“适当和inproper记录”],它不会在第一个数据集匹配“subsNumber”列
或任何其他的想法
基本上我如何从具有相同的“subsNumber”作为第1集第2集的所有记录
关键是使用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;
}
我解决了这个问题:
第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;
}
要获得所有从第二个数据集相匹配的第一个数据集的记录,这将是这样的记录:
IEnumerable的项目list3 = list2.Where(L2 => list1.Contains(L1 => l1.subsNumber == l2.subsNumber));
沿着这些线路的东西!