3

基本的に、DataTableパーツ番号を含む行と、それらのパーツに関する情報を含むいくつかの列を持つがあります。

これらの情報をデータベースにあるデータと比較するために、私は2つの選択肢のうちの1つがあると判断しました。

オプション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はこのプロセスをスピードアップしますか?私は実際にそれを使用したことはありませんが、それを閲覧するだけで役立つもののように見えます。

4

1 に答える 1

4

DB呼び出しをできるだけ少なくします。99.9%の時間でより効率的になります。(コーディングする一般的なルール)

于 2012-09-27T20:19:30.770 に答える