2016-09-30 106 views
-2

我對lambda沒有任何瞭解,我甚至無法讀取複雜的lambda expression。我有這個lambda代碼下面,我想轉換成LINQ,但我不知道如何。Lambda轉換爲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(這是使用lambda表達式) – 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

我更喜歡lambda linq也。無論如何,在運行時,理解會被編譯到lambda linq,所以它在我看來確實沒什麼區別。 –

+0

@Steffsww我可以使用連接來轉換它嗎?可能?是/否? –