哪个更有效,循环访问DataTable或更多数据库调用?

时间:2012-09-27 20:14:09

标签: c# asp.net performance loops

基本上我有一个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会加速这个过程吗?我从来没有真正使用它,但只是浏览它看起来像是可以帮助的东西。

1 个答案:

答案 0 :(得分:4)

尽可能少地调用数据库。 99.9%的时间你会更有效率。 (编码的一般规则)