c# - 循环 DataTable 或更多数据库调用哪个更有效?

标签 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 会加快这个过程吗?我从来没有真正使用过它,但只是浏览了一下它似乎可以提供帮助。

最佳答案

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

关于c# - 循环 DataTable 或更多数据库调用哪个更有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12629319/

相关文章:

c# - 使用 Entity Framework 5 从 oracle 包导入程序

c# - 查询返回 0 行

c# - C#中如何设置编码?

wcf - 负载测试 WCF 服务(托管在 IIS 上)

java - map 接口(interface)java

c# - 在 Catch block 中重试?

c# - p/invoke C函数返回指向结构的指针

C# 性能 - 线性数组访问与随机访问

jquery - 如何求子ul li a的宽度

r - 如何在 R 中优化以下程序以提高性能? (涉及计算密集型置换测试的蒙特卡罗模拟)