Обработка результата лямбда-запроса в C# после выполнения соединения таблицы - PullRequest
0 голосов
/ 24 января 2020

Итак, у меня есть запрос, который объединяет две таблицы данных:

var results = (
   from t1 in table1.AsEnumerable()
   join t2 in table2.AsEnumerable() on
        new { a = t1["col1"], b= t1["col2"], c = t1["col3"] } equals
        new { a= t2["col1"], b= t2["col2"], c= t2["col3"] }
   into joinedComboTable
   select joinedComboTable);

, и он выдает результат с типом IEnumerable<IEnumerable<datarow>>"

Как мне преобразовать его в DataTable? Таблицы 1 и Таблицы 2: C# DataTable с. Я вижу 304 результатов, которые я вижу через отладчик и параметр results.inner (Non-Publi c), который у меня есть DataColumn s, и я вижу 304 строки. Но я не могу понять, как получить фактический результат и сохранить его в DataTable.

ОБНОВЛЕНИЕ: 2020.01.23 @ 9:04 pm

Итак, я проверил пару Приведенные ниже параметры и когда я выполняю results.ToList (), я получаю в основном список из 304 записей, но значением каждой строки является System.Data.DataRow [0]. Должно быть, я что-то упускаю ....

Visual Studio QuickWatch of data

Повторение этого не дает желаемых результатов.

Ответы [ 2 ]

1 голос
/ 24 января 2020

Попробуйте

1002 *
0 голосов
/ 24 января 2020

Вы можете получить первый уровень, вызвав var rows = result.FirstOrDefault(), чтобы вернуть IEnumerable из строк. Создайте новый экземпляр таблицы данных var newtable = new DataTable();, затем через l oop, чтобы добавить строки в свойство коллекции строк новой таблицы данных, например ...

for(var i=0; i <= rows.Count(); i++)
     newtable.Rows.Add(rows[i]);

что-то подобное должно работать для вас. Извините за опечатку .. Я использую свой мобильный телефон

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