LINQ - 加入2个数据表 - 通配符

时间:2009-03-17 21:06:00

标签: linq join datatable

我正在使用LINQ加入2个数据表。我试图从dtTable2返回1个字段,从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 个答案:

答案 0 :(得分:3)

没有。您需要列出所需的属性或引用行对象中的属性。请注意,如果这是一个强类型行,您可以将其强制转换为类型并直接在代码中使用这些字段。

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

答案 1 :(得分:0)

这有点尴尬,但你可以用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;