LINQ - объединить 2 таблицы данных - подстановочный знак - PullRequest
1 голос
/ 18 марта 2009

Я использую LINQ, чтобы объединить 2 таблицы данных. Я пытаюсь вернуть только 1 поле из dtTable2 и все поля из dtTable1. Когда этот код выполняется, у меня есть два столбца. Первый столбец содержит значение из dtTable2.field2, а второй столбец имеет значение «System.Data.DataRow». Я знаю, что если я явно укажу столбцы в dtTable1, у меня будут результаты, которые мне нужны. Можно ли указать подстановочный знак, чтобы получить все столбцы из dtTable1?

Dim results = _
   From r In dtTable1.AsEnumerable _
   Join c In dtTable2.AsEnumerable _
   On c.Field1 Equals r.Field1 _
   Select c.field2, r

Datagridview.datasource = results.ToList

Ответы [ 2 ]

3 голосов
/ 18 марта 2009

Нет. Вам нужно будет перечислить свойства, которые вы хотите, или ссылаться на свойства из объекта строки. Обратите внимание, что если это строго типизированная строка, вы можете привести ее к типу и использовать поля непосредственно в своем коде.

Dim results = _
   From r In dtTable1.AsEnumerable _
   Join c In dtTable2.AsEnumerable _
   On c.Field1 Equals r.Field1 _
   Select c.field2, r.Field1, r.Field3, r.Field4

Datagridview.datasource = results.ToList
0 голосов
/ 18 марта 2009

Это немного неловко, но вы можете сделать это с помощью объекта List и Concat. Я недостаточно знаком с VB, чтобы дать вам правильный синтаксис, но вот C #

var results = from r in dtTable1.AsEnumerable()
              join c in dtTable2.AsEnumerable() on c.Field1 equals r.Field1
              select new List<object>(r.ItemArray).Concat(new List<object>() { c.Field2 })
datagridview.DataSource = results;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...