2016-09-30 7 views
0

Ich versuche Linq herauszufinden. Ich habe sehr wenig Erfolg und die meisten Artikel sind für C#, was nicht hilft.Linq, SQL und ISNULL

Ich versuche, die folgende Arbeit zu machen;

Dim query = From r In db.eq_list 
       Join s In db.interview_main On r.CLIENTCODE Equals s.CLIENTCODE And r.CONTROL Equals s.CONTROL 
       Select New With {r.UserName, r.CONTROL, r.CLIENTCODE, r.CLIENTLOCATION, r.IDATETIME, r.FIRSTNAME, 
        r.LASTNAME, If(String.IsNullOrEmpty(s.Code), 0, s.Code)} 


    dgvOnHold.DataSource = query.ToList 

Das Problem ist der IF-Teil. Dieser Teil kann NULL in der Datenbank sein, aber ich möchte es als 0 zurückgeben, wenn NULL ist. Ich stelle das in eine schreibgeschützte Datagridview. Das ursprüngliche SQL ist wie folgt;

SELECT r.ID,r.UserName,r.CONTROL,r.CLIENTCODE,r.CLIENTLOCATION,r.IDATETIME,r.FIRSTNAME,r.LASTNAME,ISNULL(s.CODE,0) AS CODE 
FROM system.eq_list AS r 
LEFT JOIN interview.main AS s ON r.CLIENTCODE = s.CLIENTCODE AND r.CONTROL = s.CONTROL; 

Antwort

1

Das kann ich im Moment nicht überprüfen, aber wie wäre es?

Dim query = From r In db.eq_list 
      Join s In db.interview_main On r.CLIENTCODE Equals s.CLIENTCODE And r.CONTROL Equals s.CONTROL 
      Select New With {r.UserName, r.CONTROL, r.CLIENTCODE, r.CLIENTLOCATION, r.IDATETIME, r.FIRSTNAME, 
       r.LASTNAME, If(s.Code is Nothing, 0, s.Code)} 


dgvOnHold.DataSource = query.ToList 
+0

Ich bekomme den Fehler: Anonyme Typ Mitgliedsname kann nur von einem einfachen qualifizierten Namen ohne Argumente abgeleitet werden. - Ich habe .memberof = vor Ihrer IF-Anweisung hinzugefügt. Das löste den sofortigen Fehler, aber jetzt lässt es mich die Daten in das DataGridView nicht setzen. – Kayot