2016-09-30 4 views
-2

Я ничего не знаю о лямбда, и я даже не могу прочитать сложный lambda expression. У меня есть этот лямбда-код ниже, который я хочу преобразовать в LINQ, но я не знаю, как это сделать.Lambda convert to LINQ

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(); 

То, что я пытался до сих пор и застрял на:

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

это уже есть Linq (который с помощью лямбда-выражения) – slawekwin

+1

@slawekwin извините, то я новичок в программировании. Я хочу преобразовать его в выражение linq –

+2

Извините, если это глупый вопрос, но по какой причине? У вас возникли проблемы с запросом или вы хотите повысить удобочитаемость? – Sasquatch

ответ

4

Lambda LINQ еще выражение ссылку. Тем не менее, заявление должно выглядеть примерно так:

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

Мне это труднее читать ... – Fredrik

+0

Я тоже предпочитаю лямбда linq. во всяком случае, во время исполнения все равно соблюдается лямбда-linq, так что это действительно мало чем отличается от моего мнения. –

+0

@Steffsww Могу ли я преобразовать его без использования соединения ?. Возможное? Да нет? –