2016-09-30 4 views
-2

Ich weiß nichts über Lambda, und ich kann nicht einmal eine komplizierte lambda expression lesen. Ich habe diesen Lambda-Code, den ich in LINQ konvertieren möchte, aber ich weiß nicht wie.Lambda in LINQ konvertieren

var train = db.sample1 
      .Join(db.sample2, a => a.CertificateId, b => b.CertificateId, (a, b) => new { a, b }) 
      .Where(x => x.a.Year.Value.Year == year && x.a.TrainingTypeId.Value == trainingTypeId && x.a.IsApproved.Value && x.b.EndDate >= DateTime.Now) 
      .Select(z => z.a).Distinct(); 

Was ich bisher versucht und festgefahren auf:

var train = (from c in db.sample1 
    join in ts sample2 where a.CertificateId equals b.CertificateId 
    ...... 
+4

dies bereits Linq – slawekwin

+1

@slawekwin leider (die Lambda-Ausdrücke verwendet), dann ich bin neu in die Programmierung. Was ich will, ist es in linq Ausdruck konvertieren –

+2

Sorry, wenn das eine dumme Frage ist, aber aus welchem ​​Grund? Haben Sie Probleme mit der Abfrage oder möchten Sie die Lesbarkeit erhöhen? – Sasquatch

Antwort

4

Lambda LINQ ist immer noch ein Link Ausdruck. Allerdings sollte die Anweisung wie folgt aussehen:

var train2 = (from c in db.sample1 
    join t in db.sample2 
     on c.CertificateId equals t.CertificateId 
     where c.Year.Value.Year == year && c.TrainingTypeId.Value == trainingTypeId 
     && c.IsApproved.Value && t.EndDate >= DateTime.Now 
     select c).Distinct(); 
+5

Ich finde das schwieriger zu lesen ... – Fredrik

+0

Ich bevorzuge Lambda Linq auch. im laufe des laufs wird verständnis lambda linq trotzdem eingehalten, so dass es meiner Meinung nach wirklich wenig Unterschied macht. –

+0

@Steffsww Kann ich es ohne Join konvertieren ?. Möglich? Ja Nein? –