2012-08-12 48 views
1

我在这里有一个小问题,用LINQ语句。基本上我尝试与LINQ加入两个数据表,但我不想指定将显示结果中的列。VB.Net LINQ链接两个数据表并显示所有列

我希望结果中的所有列都没有在LINQ中指定它们。 或者一些方法来动态选择列?

有什么想法?

代码:

Dim vDT1 As New DataTable 
    vDT1.Columns.Add("Key") 
    vDT1.Columns.Add("Data1") 
    vDT1.Columns.Add("Data2") 

    vDT1.Rows.Add({"01", "DATA1_AAAA", "DATA2_AAAA"}) 
    vDT1.Rows.Add({"02", "DATA1_BBBB", "DATA2_BBBB"}) 
    vDT1.Rows.Add({"03", "DATA1_CCCC", "DATA2_CCCC"}) 
    vDT1.Rows.Add({"04", "DATA1_DDDD", "DATA2_DDDD"}) 

    Dim vDT2 As New DataTable 
    vDT2.Columns.Add("Key") 
    vDT2.Columns.Add("Data3") 
    vDT2.Columns.Add("Data4") 

    vDT2.Rows.Add({"01", "DATA3_AAAA", "DATA4_AAAA"}) 
    vDT2.Rows.Add({"02", "DATA3_BBBB", "DATA4_BBBB"}) 
    vDT2.Rows.Add({"03", "DATA3_CCCC", "DATA4_CCCC"}) 
    vDT2.Rows.Add({"04", "DATA3_DDDD", "DATA4_DDDD"}) 

    Dim vLINQ = From DT1 In vDT1.AsEnumerable 
         Join DT2 In vDT2.AsEnumerable 
         On DT1.Field(Of String)("Key") Equals DT2.Field(Of String)("Key") 
         Select Key = DT1.Field(Of String)("Key"), Data1 = DT1.Field(Of String)("Data1"), Data2 = DT1.Field(Of String)("Data2"), 
          Data3 = DT2.Field(Of String)("Data3"), Data4 = DT2.Field(Of String)("Data4") 

***我想跳过LINQ

“选择” 这是结果: enter image description here

回答

1

你不能有LINQ构建无select。您应该在linq查询中使用selectgroup by子句。

Dim vLINQ = (From DT1 In vDT1.AsEnumerable 
      Join DT2 In vDT2.AsEnumerable 
      On DT1.Field(Of String)("Key") Equals DT2.Field(Of String)("Key") 
      Select new with 
      { 
       .Key = DT1.Field(Of String)("Key"), 
       .Data1 = DT1.Field(Of String)("Data1"), 
       .Data2 = DT1.Field(Of String)("Data2"), 
       .Data3 = DT2.Field(Of String)("Data3"), 
       .Data4 = DT2.Field(Of String)("Data4") 
      }).ToList() 

现在vLINQ是(的annonymousType)的列表,其具有键,Data1..Data4作为属性,可以用来作为

//sorry for C# code 
foreach(var l in vLinq) 
{ 
    console.writeline(l.Key); 
    console.writeline(l.Data1); 
} 
+0

MMMM,OK,你知道的任何方法来动态地创建,我想显示的字段? – MiBol 2012-08-12 06:09:22

+1

更新了答案 – 2012-08-12 06:14:53

+0

感谢您的快速回复。但是我更加动态地思考问题。例如:我想创建一个方法,可以通过将任何数据表应用到任何列的组合。然后,我需要从DataTables的结构创建这些List(Of AnnonymousType)。 – MiBol 2012-08-12 06:29:12

相关问题