我的数据库中有一个名为 PNUMSET(主键)的列包含唯一数据。(大约 1L 行)
在应用程序中,我有一个数据表,其中包含一个列名称NEWPNUM,其中包含数据。
我想检查现有数据库和当前数据表值之间是否没有值匹配。
注意:- 数据库和数据表中的行可能相同也可能不同。
到目前为止我已经尝试过......
String query = "Select PNUMSET FROM DUMMYTABLE";
MySqlDataAdapter msda = new MySqlDataAdapter(query, connection);
msda.Fill(dt);
for (int k = 0; k < Class1.global_dataset.Tables[0].Rows.Count; k++)
{
if (dt.Rows.Contains(Class1.global_dataset.Tables[0].Rows[k][4].ToString()))
{
MessageBox.Show("Baj Gaya Ghanta!!!!");
}
}
最佳答案
您可以使用 Linq-To-DataTable
来 join此列上的两个表,例如:
var commonRows = from r1 in dt.AsEnumerable()
join r2 in Class1.global_dataset.Tables[0].AsEnumerable()
on r1.Field<int>(4) equals r2.Field<int>(4)
select r1;
if(commonRows.Any())
{
// do something with these rows
}
(假设第 5 列且其类型为 int
)
请注意,虽然 Enumerable.Join
非常高效,最好在数据库中进行比较,而不是全部加载到内存中。
关于c# - DATABASE 和 DATATABLE 之间的重复检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14138155/