

.Net 4.0(vb.net)で開発しています。

2つのDataTableを結合するために、DataTable.Mergeメソッドを利用しようと考えています。

[code]

    dataTableA.Merge(dataTableB, false, MissingSchemaAction.Error)
    
[/code]

としたときに、

> ターゲット テーブル B に列 XXX の定義が見つかりません。

とエラーが発生しています。  
単純なエラーに見えますが、dataTableAにもdataTableBにも列：XXXは存在しています。

[code]

    dataTableA.WriteXmlSchema("schemaA.xml")
    dataTableB.WriteXmlSchema("schemaB.xml")
    
[/code]

として出力したスキーマのXMLを比較しても一致しています。

エラーメッセージのテーブル名(B)とDataTable.TableNameが一致しているのはdataTableBです。

[code]

    dataTableB.Columns.Contains("XXX")
    
[/code]

は `True` を返します。

他になにか見落としている点がありそうですか？

* * *

類似のコーディングをしている箇所が少なかったのでループでImportRowして対応することにしました。  
ImportRowもスキーマ合致する必要があるので、何故うまく行くのか不明で納得できませんが。。。


CC BY-SA 4.0
2018-10-26T01:22:49.283
49669
2018-10-29T07:25:41.973
2018-10-26T23:35:05.537
30700
30700
question
.net vb.net
.NetのDataTable.Mergeで対象の列がないとエラーが発生する


var result =
dataTableA.AsEnumerable().Union(dataTableB.AsEnumerable()).CopyToDataTable();

すみません、日本語があまり上手ではありません。


CC BY-SA 4.0
2018-10-29T07:25:41.973
49760
2018-10-29T07:25:41.973
30747
49669
answer