我总是喜欢lambda表达式来执行集合操作。但我可以用LINQ实现同样的事情,它比Lambda表达式更简单。但是,我仍然对于抽象级别&为什么呢?
答案 0 :(得分:11)
我怀疑“LINQ”你的意思是“查询表达式”:
var query = from x in y
where x.Foo
select x.Bar
我怀疑“lambda表达”你的意思是直接调用扩展方法:
var query = y.Where(x => x.Foo)
.Select(x => x.Bar);
这两个都是真的 LINQ ...
我认为查询表达式处于略高更高的抽象级别,并且需要更多工作才能实现真正的操作......但鉴于转换过程是公平的,并不是非常重要机械。
答案 1 :(得分:3)
LINQ表达式由编译器转换为相应的扩展方法。 Lambda表达式是BCL的一部分,而LINQ语法只是由编译器翻译的语法糖,它不是发出的IL的一部分。
答案 2 :(得分:2)
我猜你的问题实际上是关于查询语法中的Linq(来自carList select car.Brand中的car)和方法语法(carList.Select(car => car.Brand))之间的区别? 在这种情况下,它很容易回答:Linq的查询语法只是语法糖,并将被转换为方法调用。因此,就抽象级别而言,它们几乎完全相同。查询语法对普通人来说看起来更容易理解。
门诺