1

Ich habe zwei Einheiten namens Patients und TelephoneCallsHistory mit 1-m Beziehung.LINQ für kumulative Datensätze

Die Abfrage unten ist, enter image description here

Das Datenmodell ist

enter image description here

Das folgende ist die Probe Telefondaten enter image description here

Ich möchte die Patientenakten zurückzukehren, wo Das Ergebnis des Kontakts ist Rückruf ist erforderlich, da in den nächsten Datensätzen kein Kontaktzweck angegeben ist abgeschlossen. Im Grunde versuche ich eine Benachrichtigung/Benachrichtigung für den Benutzer zu erstellen.

Ich habe mit folgendem Code

query = query 
    .Where(m => !m.PatientsMasterItem 
      .PatientsTelephoneFollowupDetail.Any(l => l.Status == "1")); 

Aber es funktioniert nicht in dem oben angegebenen Beispiel (siehe Testdaten) kommen. Aber immer noch erfordert der letzte Rekord eine Aktion, um weiterzumachen.

+0

Zwei Fragen. Können Sie Ihr Domain-Modell zeigen? Was ist der Anfangswert der Abfrage? – ADIMO

+0

Und wie steht dein Screenshot zu deiner Frage? –

+0

Der Screenshot zeigt Beispieldaten für einen Patienten. Der Status 1 bezieht sich auf "Kontakt Zweck abgeschlossen" – user1213055

Antwort

1

Dies ist nicht kompiliert - das ist nur ein Hinweis. Sie brauchen etwas likeSomething wie

 var required = query.Where(DoesPatientNeedCallback); 

     public static bool DoesPatientNeedCallback(Patient p) 
     { 
       var last = p.PatientsMasterItem.PatientsTelephoneFollowupDetail.LastOrDefault(c => c.Status == 'Contact Required' || c.Status == 'Contact Purpose Completed); 
       return last != null && last.Status == 'Contact Required' 

     } 
0

Der vollständige Code unten ist

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using Microsoft.LightSwitch; 
using Microsoft.LightSwitch.Security.Server; 

namespace LightSwitchApplication 
{ 
public partial class ApplicationDataService 
{ 

    partial void StatusCallBackRequired_PreprocessQuery(ref IQueryable<PatientsTelephoneFollowupDetail> query) 
    { 
     var required = query.Where(PatientNeedCallback); 

    } 

    public static bool PatientNeedCallback(PatientsTelephoneFollowupDetail p) 
    { 
     var last = p.PatientsMasterItem.PatientsTelephoneFollowupDetail.LastOrDefault(c => c.Status == "7" || c.Status == "1"); 
     return last != null && last.Status == "7"; 

    } 
}  


}