none
2 Tabellen verknüpfen zu einer (von einer Tabelle aber nur 2 Felder)

    Frage

  • Hi, ich stehe gerade ein bisschen auf dem Schlauch.
    Ich habe 2 Tabellen , die ich miteinander verknüpfen will. Die Daten habe ich in einer List of ...
    Anschließend packe ich die Daten in ein Grid. Ich brauche aber von Liste 1 alle Daten und von Liste2 nur 2 Felder.
    Kann ich sowas auch mit Linq lösen?
    Habe zwar ein Beispiel gefunden, aber die nehmen immer die ganze Tabelle
        

    Dimboth = Fromrow1 IndataTable1.AsEnumerable()                          

    Joinrow2 IndataTable2.AsEnumerable()                             

    Onrow1.Field(OfString)("ColumnName") Equalsrow2.Field(OfString)("ColumnName")

                    UltraGrid1.DataSource = both

    Donnerstag, 8. Februar 2018 14:44

Antworten

  • Hi Michael,
    hier mal eine Demo mit Listen:

    Module Module22
      Sub Main()
        Try
          Dim c As New Demo
          c.Execute()
        Catch ex As Exception
          Console.Write(ex.ToString)
        End Try
        Console.WriteLine("weiter mit Taste")
        Console.ReadKey()
      End Sub
    
      Class Demo
        Friend sT As String = "xxx"
        Friend Sub Execute()
          Dim l1 As New List(Of Data1)
          Dim l2 As New List(Of Data2)
          For i = 1 To 9
            l1.Add(New Data1 With {.ID = i, .Info1 = $"Zeile {i} in List 1"})
            l2.Add(New Data2 With {.FK = i, .Info2 = $"Zeile {i} in List 2"})
          Next
          Dim q = From item1 In l1 Join item2 In l2 On item1.ID Equals item2.FK
                  Select New With {.ID = item1.ID, .Info1 = item1.Info1, .Info2 = item2.Info2}
          For Each item In q
            Console.WriteLine($"ID: {item.ID}, Info1: {item.Info1}, Info2: {item.Info2}")
          Next
        End Sub
      End Class
      Class Data1
        Public Property ID As Integer
        Public Property Info1 As String
      End Class
    
      Class Data2
        Public Property FK As Integer
        Public Property Info2 As String
      End Class
    End Module


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 9. Februar 2018 12:50

Alle Antworten

  • Hi Michael,
    unklar ist, dass Du von List Of als Datenpuffer schreibst, aber AsEnumerable zeigst, was für DataTables üblich ist. Wenn Du DataTables nutzt, warum packst Du diese nicht in ein DataSet mit DataRelation und entsprechenden berechneten Feldern (Parent in der Child-Tabelle), womit Du die gewünschte Anzeige realisieren kannst. 

    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Donnerstag, 8. Februar 2018 19:30
  • Hallo Peter, das mit den Datatable war nur ein Beispiel. Für meine List of ... hatte ich nichts brauchbares gefunden wie ich zwei Listen zu einer zusammen fügen kann.

    Freitag, 9. Februar 2018 08:40
  • Hi Michael,
    hier mal eine Demo mit Listen:

    Module Module22
      Sub Main()
        Try
          Dim c As New Demo
          c.Execute()
        Catch ex As Exception
          Console.Write(ex.ToString)
        End Try
        Console.WriteLine("weiter mit Taste")
        Console.ReadKey()
      End Sub
    
      Class Demo
        Friend sT As String = "xxx"
        Friend Sub Execute()
          Dim l1 As New List(Of Data1)
          Dim l2 As New List(Of Data2)
          For i = 1 To 9
            l1.Add(New Data1 With {.ID = i, .Info1 = $"Zeile {i} in List 1"})
            l2.Add(New Data2 With {.FK = i, .Info2 = $"Zeile {i} in List 2"})
          Next
          Dim q = From item1 In l1 Join item2 In l2 On item1.ID Equals item2.FK
                  Select New With {.ID = item1.ID, .Info1 = item1.Info1, .Info2 = item2.Info2}
          For Each item In q
            Console.WriteLine($"ID: {item.ID}, Info1: {item.Info1}, Info2: {item.Info2}")
          Next
        End Sub
      End Class
      Class Data1
        Public Property ID As Integer
        Public Property Info1 As String
      End Class
    
      Class Data2
        Public Property FK As Integer
        Public Property Info2 As String
      End Class
    End Module


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP)
    Meine Homepage mit Tipps und Tricks

    Freitag, 9. Februar 2018 12:50