Vier DataTables die aus CSV Dateien kommen joinen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von John422.

    Vier DataTables die aus CSV Dateien kommen joinen

    Guten Abend,

    ich habe vier CSV Dateien mit je einer Spalte mit einer ID und ansonsten unterschiedlichen Spalten.

    Wie joine ich die am smartesten anhand der ID?

    Dachte an Linq aber laufe da in eine Problem aus der Linq query wieder ein DataTabel zu machen.

    Hat jemand eine Idee?

    Viele Grüße

    John

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    ich würde mir ein typisiertes Dataset basteln mit 4 DataTables wo ich den Kram einlesen täte.
    in einem solchen kann man Daten am besten verarbeiten, ohne zu joinen.
    Joinen ist immer problematisch, weil das ist ein Readonly-vorgang.
    Also wenn mehrere Tables zu einer zusammengemanscht sind, ist es kaum möglich, Änderungen an den Daten vorzunehmen und wieder in die Ursprungs-Tables zurückzuschreiben.

    guggemol die vier Views auf Video, wie man mit typDataset arbeiten kann.
    Ich habe es letztendlich so gelöst, weil nur eine Miniaufgabe und keine Lust auf groß umschreiben...

    VB.NET-Quellcode

    1. Public Function LINQResultToDataTable(Of T)(ByVal Linqlist As IEnumerable(Of T)) As DataTable
    2. Dim dt As DataTable = New DataTable()
    3. Dim columns As PropertyInfo() = Nothing
    4. If Linqlist Is Nothing Then Return dt
    5. For Each Record As T In Linqlist
    6. If columns Is Nothing Then
    7. columns = (CType(Record.[GetType](), Type)).GetProperties()
    8. For Each GetProperty As PropertyInfo In columns
    9. Dim colType As Type = GetProperty.PropertyType
    10. If (colType.IsGenericType) AndAlso (colType.GetGenericTypeDefinition() = GetType(Nullable(Of))) Then
    11. colType = colType.GetGenericArguments()(0)
    12. End If
    13. dt.Columns.Add(New DataColumn(GetProperty.Name, colType))
    14. Next
    15. End If
    16. Dim dr As DataRow = dt.NewRow()
    17. For Each pinfo As PropertyInfo In columns
    18. dr(pinfo.Name) = If(pinfo.GetValue(Record, Nothing) Is Nothing, DBNull.Value, pinfo.GetValue(Record, Nothing))
    19. Next
    20. dt.Rows.Add(dr)
    21. Next
    22. Return dt
    23. End Function