Priorität in Abfrage einbauen



  • Hallo zusammen 🙂

    Gibt es einen einfachen Weg, wie ich eine Abfrage mit Priorität machen kann?

    Folgendes Beispiel: Ich möchte anhand einer Nummer einen Datensatzes aus einer Tabelle finden, nach Priorität. Zu dieser Nummer gibt es u.a. Einträge, um welchen Dokumenttyp es sich handelt.
    Also .doc, .xls usw. Jede Art kann pro Nummer nur einmal vorkommen, aber zu jeder Nummer können unterschiedlich viele Typen zugeordnet sein.

    var query = (from p in konstdaten
                                         where p.nummer == sNummer
                                         where p.type == "DOC" || p.type == "XLS" || p.type == "TXT" || p.type == "CRD" || p.type == "ODS" 
                                         where p.status != "3"
                                         select p).FirstOrDefault();
    

    Nun soll, zuerst der Datensatz, der zum Typ "DOC" passt zurückgegeben werden.
    Falls es kein "DOC" gibt, dann "XLS". Gibt es dieses auch nicht, dann "TXT" usw.

    Wie kann ich dies umsetzten?
    Hilft da eine SortedList??
    Oder kann ich das ganze über if else lösen?

    Danke für eure Tipps! 👍



  • Da wirst du wohl entsprechende Einzelabfragen durchführen müssen, also erst nach "DOC", wenn nicht vorhanden dann nach "XLS", ...

    Wenn die Typen Zahlen wären (oder Enumerationen o.ä.), dann könntest du auch einfach die Abfrage danach sortieren (order by) und den ersten nehmen.

    Edit: die Einzelabfragen solltest du dann mittels einer Schleife realisieren, welche einfach die Typenliste als Parameter durchläuft (solange bis die Abfrage Werte geliefert hat).



  • @Th69
    Danke für die Hilfe! Hab es nun über Einzelabfragen wie von dir vorgeschlagen gelöst.


Anmelden zum Antworten