Linq возвращает все столбцы из всех таблиц в соединении - PullRequest
1 голос
/ 15 октября 2010

Допустим, у меня есть 2 таблицы, каждая из которых содержит динамические столбцы, и я хочу получить коллекцию данных со всеми столбцами из обеих таблиц (позже я свяжу ее с представлением сетки) после выполнения левого внешнего соединения.

Пример запроса:

var query = from TableA in ds.Tables[0].AsEnumerable()
            join TableB in ds.Tables[1].AsEnumerable() on new { col1 = TableA.Field<Int32>("colA"), col2 = TableA.Field<DateTime>("colB") }
            equals new { col1 = TableB.Field<Int32>("colA"), col2 = TableB.Field<DateTime>("colB") }
            into GJ
            from sub in GJ.DefaultIfEmpty()
            select TableA;

Проблема: я хочу выбрать tableA и tableB вместе.Приведенный выше пример запроса работает и заполняет все столбцы таблицы A после левого внешнего соединения.Но я хочу получить все столбцы из обеих таблиц.Пожалуйста посоветуй.

1 Ответ

2 голосов
/ 15 октября 2010

Просто выделите обе части в анонимный тип:

var query = from TableA in ds.Tables[0].AsEnumerable()
            join TableB in [ ...] on [...] equals [...] into GJ
            from sub in GJ.DefaultIfEmpty()
            select new { RowA = TableA, RowB = sub };

Каждый элемент результата будет иметь два свойства: RowA - строка из TableA, а RowB - совпадающая строка.от TableB или ноль, если ни одна строка из TableB не соответствует RowA.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...