基本上我有一个 DataTable
,其中一行包含零件编号,几列包含这些零件的信息。
为了将这些信息与我们在数据库中的数据进行比较,我确定我有两个选项之一。
选项 1 - 遍历每一行并选择数据
void CompareData(DataTable dt) {
foreach (DataRow entry in dt.Rows) {
//select that row
DataRow dbEntry = ExecuteQuery("SELECT * FROM Parts WHERE partno='" + entry["partno"] + "'").Rows[0];
if (dbEntry["info1"] == entry["info1"]) {
//do something
} else {
//do something
}
}
}
选项 2 - 一次选择所有数据并通过循环进行比较
void CompareData(DataTable dt, string[] parts) {
DataTable dbEntries = ExecuteQuery("SELECT * FROM Parts WHERE partno IN('" + String.Join(parts, "','") + "')");
foreach (DataRow entry in dt.Rows) {
foreach (DataRow dbEntry in dt.Rows) {
if (dbEntry["partno"] == entry["partno"]) {
if (dbEntry["info1"] == entry["info1"]) {
//do something
} else {
//do something
}
}
}
}
}
它们看起来都很低效,所以我不太确定该怎么做。 LINQ 会加快这个过程吗?我从来没有真正使用过它,但只是浏览了一下它似乎可以提供帮助。
最佳答案
尽可能少地调用数据库。 99.9% 的时间你会更有效率。 (编码的一般规则)
关于c# - 循环 DataTable 或更多数据库调用哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629319/