如何比较一个数据集的值。
第一个数据集 [“正确记录”]来自SQL Server,列名为
[id], [subsNumber]
第二个数据集 [“正确和不合适的记录”]来自进度数据库,除了1 subsNumber
之外的其他列
如何制作另一个数据集,其中包含来自[“正确记录”]的所有[subsNumber]
以及来自第二个数据集[“正确的不正确记录”]的匹配记录?
或
删除第2个数据集中的所有记录[“正确和不正确的记录”],这些记录与第1个数据集中的“subsNumber”列不匹配
或任何其他想法
基本如何获取第二个数据集中与第一个数据集具有相同“subsNumber”的所有记录
答案 0 :(得分:3)
关键是使用System.Data.DataRelation将公共列(或列)上的2个数据表连接起来。
的帖子派生的一些代码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 :(得分:1)
我解决了这个问题:
第一个数据集 - &gt;循环throuhg并获取subsNumber
调用函数并传递subsNumber和2nd数据集 - &gt;它 然后为新数据集
启动另一个循环如果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;
}
答案 2 :(得分:0)
要从第2个数据集中获取与第1个数据集中的记录匹配的所有记录,请执行以下操作:
IEnumerable list3 = list2.Where(l2 =&gt; list1.Contains(l1 =&gt; l1.subsNumber == l2.subsNumber));
这些方面的东西!