状況が分からないので何とも言えないけど、
0. 手作業か何かでExcelからDBに各テーブルのデータを移行する
0. DBからはSQLで頑張る
正直DataTableは重いのでお勧めできないし、Excelからデータを拾ってってのも厳しいと思うので、可能ならこの手段が良いとは思う
それが難しいならZuishinさんの提案通りにDataTableからList<T>へ作り直してからLinqでJOINの方が速いと思う
DataTableは内部がobjectなので一々キャストして処理してるので
なお、DBから取得する場合は個人的にはDapperさんがおすすめ
IDが重複しないのなら以下のやり方でもありかもしれないけど、
作ったデータもDataTableにしないといけないとなるとListにしてPersonのIDのコメントを外して
.First(r => r.ID == row.Field<int>("ID"))で対象のインスタンスを拾って体重を設定した後、
最後にList<>を.ToDataTable()する感じかな?
C#
1//以下のクラスを定義しておいて
2public class Person
3{
4 //public int ID{get;set;}
5 public string 名前{get;set;} = string.Empty;
6 public double 身長{get;set;} = 0.0;
7 public double 体重{get;set;} = 0.0;
8}
9
10//Dictionaryに設定していく
11var dic = new Dictionary<int, Person>();
12
13foreach(var row in tableA)
14{
15 dic[row.Field<int>("ID")] = new Person
16 {
17 名前 = row.Field<string>("名前"),
18 身長 = row.Field<double>("身長")
19 };
20}
21
22foreach(var row in tableB)
23{
24 var p = dic[row.Field<int>("ID")];
25 p.体重 = row.Field<double>("体重");
26}
27