我正在使用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
答案 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;