我正在与Linq的同事讨论,我将在此处复制:
同事:让我们在这里诚实。Linq语法很烂。这是令人困惑和不直观的。
我:哦,比T-SQL更令人困惑吗?
同事:嗯,是的。
我:它具有相同的基本部分,选择,位置和来源
同事:对我来说,Linq是关系+ OO的混蛋。同事:不要误会我的意思-它功能强大,但是他们将SQL重新定位为使用agains对象集合。
我认为使用Linq + Lamda的功能非常强大(他同意),并且还使代码更易于阅读(他不同意这一点):
pickFiles = from f in pickFolder.GetFiles("*.txt")
where ValidAuditFileName.IsMatch(f.Name)
select f;
要么
var existing = from s in ActiveRecordLinq.AsQueryable<ScannedEntity>()
where s.FileName == f.FullName && s.DocumentType != "Unknown"
select s;
或(此处为VB代码)
Dim notVerified = From image In images.AsParallel
Group Join verifyFile In verifyFolder.GetFiles("*.vfy").AsParallel.Where(
Function(v) v.Length > 0
).AsParallel
On image.Name.Replace(image.Extension, ".vfy") Equals verifyFile.Name
Into verifyList = Group
From verify In verifyList.DefaultIfEmpty
Where verify Is Nothing
Select verify
对我来说,这是干净且容易理解的(至少比其他方法更容易阅读),您对此有何看法?