【发布时间】:2016-10-04 12:13:53
【问题描述】:
我对 lambda 一无所知,我什至看不懂复杂的lambda expression。我在下面有这个 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
......
【问题讨论】:
-
这已经是 linq(正在使用 lambda 表达式)
-
@slawekwin 抱歉,我是编程新手。我想要的是把它转换成 linq 表达式
-
对不起,这是一个愚蠢的问题,但出于什么原因?您的查询有问题还是想提高可读性?
-
Lambda 很漂亮。你为什么想要那种可怕的语法?
-
那为什么不学习如何阅读 lambda 表达式呢?例如,
public int Add(int a, int b) { return a + b; }的 lambda 等效项是(int a, int b) => { return a + b; }。参数在=>箭头之前,方法体在它之后。参数类型通常可以推断出来,所以它们经常被忽略:(a, b) => { return a + b; }。此外,lambda 通常是只包含一个表达式的短方法,因此有一个简化的语法:(a, b) => a + b。