none
DataViewとdataSet.Tablesの比較 RRS feed

  • 質問

  • SqlDataSource.SelectしたDataViewと、Excelから取得したdataSet.Tables["EXCEL"].Rowsがあります。
    これらは同じKEYをもっており、そのKEYが全て一致するか比較検証したいと考えています。
    2重ループでやれば出来そうなのですが、件数が増えると無駄な処理が増えるのでは?と懸念しています。
    必ず同じ行に同じKEYがあることを前提に検証したいので、
    ふつうの配列のようにarrayA[i] == arrayB[i] としたいのですが、
    なにか良い方法はありませんでしょうか??
    2009年9月15日 6:35

回答

  • DataTableが同じかどうかでしたらMergeとGetChangesを使う方法がありますが、たぶん比較されたいのはKEYの列だけなんですよね?
    であれば書かれているようにループで比較する以外は無いのではないかと思いますし、それが一番高速であるように思います。

    (参考)
    compare two datatables and get the result
    http://www.dotnetspark.com/kb/705-compare-two-datatables-and-get-result.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年9月15日 8:18
    モデレータ
  • ちょっと気になったのですが、どのような SQL 文を書かれているのでしょう?

    EXCEL から持ってくる方はともかく、DataView の方がデータベースから持ってきているのだとしたら、ORDER BY 句で整列しておかないと、取り出す順番は不定です。Find を使うなら問題はありませんが、「必ず同じ行に同じキーがある」の前提が崩れますので、ご注意。


    Jitta@わんくま同盟
    2009年9月16日 13:57

すべての返信

  • DataTableが同じかどうかでしたらMergeとGetChangesを使う方法がありますが、たぶん比較されたいのはKEYの列だけなんですよね?
    であれば書かれているようにループで比較する以外は無いのではないかと思いますし、それが一番高速であるように思います。

    (参考)
    compare two datatables and get the result
    http://www.dotnetspark.com/kb/705-compare-two-datatables-and-get-result.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年9月15日 8:18
    モデレータ
  • ありがとうございます。
    自分なりに試行錯誤して、
    DataViewをループさせながら、
    dataSet.Tables["EXCEL"].Rows.Find(Key)
    という方法にしました。

    参考も呼んでみます。
    2009年9月15日 9:51
  • ちょっと気になったのですが、どのような SQL 文を書かれているのでしょう?

    EXCEL から持ってくる方はともかく、DataView の方がデータベースから持ってきているのだとしたら、ORDER BY 句で整列しておかないと、取り出す順番は不定です。Find を使うなら問題はありませんが、「必ず同じ行に同じキーがある」の前提が崩れますので、ご注意。


    Jitta@わんくま同盟
    2009年9月16日 13:57
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    trapemiyaさん、Jittaさん、いつもお世話になっております。

    zepryoさん、初めまして。
    MSDNフォーラムのご利用有難うございます。

    修正方法が決まって良かったです。是非Jittaさんのアドバイスも参考にしてくださいね(^-^)
    今回、trapemiyaさんとJittaさんからの投稿が有用な情報だと思いましたので、
    勝手ながら、回答マークを付けさせてもらいました。

    今後ともMSDNフォーラムをよろしくお願いします。


    マイクロソフト株式会社 フォーラム オペレーター 高橋春樹
    2009年10月1日 8:58