#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 наборов данных»