LINQ To DataSet - brauche ein Beispiel für Filtern der Daten mit vielen Zwischenschritten

  • VB.NET

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

    LINQ To DataSet - brauche ein Beispiel für Filtern der Daten mit vielen Zwischenschritten

    Hallo,

    ich habe mir LINQ2DataSet von EDR angeschaut und auch bei MSDN die Links durchgelesen, allerdings gibt es da jeweils nur eine einzige Abfrage (bzw. bei MSDN noch weniger - mich interessiert da NUR typisiertes DataSet).
    Ich habe folgendes (sehr vereinfachtes) Modell:


    Gegeben ist ChanID (z.B. 7). Ich will am Ende alle Datensätze von EnumFunc und LinFunc, die dazu gehören.
    Die Reihenfolge:
    1. Datensatz in ReceiveChannelTable suchen, der diese ChanID (ist kein Primärschlüssel, sollte es wichtig sein, da überlege ich noch, ob ich es zu einem mache, die Werte sind einmalig und gehen von 1 bis 32) hat
    2. SensorID ablesen und Datensatz in SensorTable suchen, der diese SensorID hat
    3. ProfileID ablesen und ALLE Datensätze (sind in jedem Fall mehrere) in MapProfFuncTable suchen, die diese ProfileID haben
    4. Aus diesen Datensätzen alle EnumFuncID und LinFuncID raussuchen, von denen brauche ich dann die Datensätze, um Eigenschaften zu haben.

    Im Kopf weiß ich also, wie ich vorgehen soll, ich brauche "nur noch" die Syntax davon. Gerade, weil es am Ende mehrere Datensätze sind, die die gleiche ProfileID haben, und ich alle davon brauche.

    Vielen Dank im voraus.

    LG
    also die beiteiligten Profile kriegste glaub mit

    VB.NET-Quellcode

    1. Dim profiles = From rwChan in ReceiveChannels where rwChan.ChanID=7 Select rwChan.SensorRow.ProfileRow Distinct


    Die enumFunc- und LinFunc-Rows musste natürlich in 2 zusätzlichen Abfragen abgreifen, weil das sind ja unterschiedliche Datentypen.

    Ah- die GetMapProfFuncs kannste noch mit einer kriegen - mit SelectMany

    VB.NET-Quellcode

    1. Dim MapProfFuncs=profiles.SelectMany(Function(prf)prf.GetMapProfFuncRows)


    so in der art - ich muss los, ist ungetestet.

    versuch nicht mit gewalt alles in eine Abfrage zu stopfen ;)