Присоединяйтесь к списку в общем столбце

#c# #linq #inner-join

#c# #linq #внутреннее соединение

Вопрос:

Я хочу создать функцию, которая joins a Listlt;DataTablegt; . У всех DataTable есть символ column , но разница во втором столбце, как это:

 [Symbol, dd90]  [Symbol, sr30]  [Symbol, sr60]  ...  

и так далее. Я бы хотел DataTable , чтобы в конце был один со всеми columns ключами Symbol :

 [Symbol, dd90, sr30, sr60...]  

Что — то вроде этого:

 public DataTable JoinAll(Listlt;DataTablegt; tables)  {  DataTable dtResult = new DataTable();  dtResult.Columns.Add("Symbol", typeof(string));  dtResult.Columns.Add("dd90", typeof(double));  dtResult.Columns.Add("sr30", typeof(double));  dtResult.Columns.Add("sr60", typeof(double));  dtResult.Columns.Add("sr90", typeof(double));   foreach(var dt in tables)  {  //What goes in here?  }   return dtResult;  }  

Я пробовал это, но это не работает, и я не понимаю, почему:

 public DataTable JoinAll(DataTable first, Listlt;DataTablegt; rest) {  DataTable dtResult = first;   foreach (var dt in rest)  {  var result = (from table1 in dtResult.AsEnumerable()  join table2 in dt.AsEnumerable() on table1["Symbol"] equals table2["Symbol"]  select table1).ToList();   dtResult = result.CopyToDataTable();   }    return dtResult; }  

Комментарии:

1. Не принято смешивать и сопоставлять DataTable общие типы коллекций или наоборот. Почему у вас есть Listlt;DataTablegt; ? Что это означает? Почему бы не использовать DataSet вместо этого? — или, почему вы используете DataTable вместо строго типизированных объектов строки?

2. Дай, на самом деле у меня может быть списокlt;Набор данныхgt;. Как бы это помогло?

3. поиск : «c# внутреннее соединение 2 наборов данных»