2012-08-12 86 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

相關問題