我有两个从DB检索的数据表 - 每个只包含一列(nvarchar(50)) - 我想获得这些表中常见的所有行。我想将结果保存在新的dataTable中。我怎样才能做到这一点?非常感谢你。
`DataTable dt1 = new DataTable();
DataTable dt2 = new DataTable();
var FinalDataTable = new DataTable();`
FinalDataTable必须填充两个表中的公共行。
foreach(var rows in dt1.Rows)
试图使用
不确定它是如何工作的。
答案 0 :(得分:2)
试试这个:
var result = from r1 in dt1.AsEnumerable()
join r2 in dt2.AsEnumerable()
on r1.Field<string>(0) equals r2.Field<string>(0)
select r1;
var newDataTable = new DataTable();
newDataTable.Columns.Add("MyCol", typeof(string));
foreach (var item in result) {
newDataTable.Rows.Add(item.ItemArray);
}
其中dt1
和dt2
为DataTable
,其中包含一列字符串类型。
答案 1 :(得分:1)
void matchColumn()
{
SqlDataAdapter da = new SqlDataAdapter("select * from images", "connectionString");
DataTable DataTableA = new DataTable();
da.Fill(DataTableA); // Fill the dataset
SqlDataAdapter da2 = new SqlDataAdapter("select * from images", "connectionString");
DataTable DataTableb = new DataTable();
da.Fill(DataTableb); // Fill the dataset2
int found = 0;
for (int i = 0; i < DataTableA.Rows.Count; i++)
{
if (DataTableB.Rows[i][0] == DataTableA.Rows[i][0] && DataTableB.Rows[i][1] == DataTableA.Rows[i][1])
{
DataTableB.Rows[i]["Country"] = "Matched";
found++;
if (found >= 2)
{
//perform insertion
}
}
else
{
DataTableB.Rows[i]["Country"] = "Not Matched";
}
}
}
试试这个