在抽象级别Linq或Lambda表达式中更高

时间:2011-09-16 11:18:14

标签: c# asp.net

我总是喜欢lambda表达式来执行集合操作。但我可以用LINQ实现同样的事情,它比Lambda表达式更简单。但是,我仍然对于抽象级别&为什么呢?

3 个答案:

答案 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的查询语法只是语法糖,并将被转换为方法调用。因此,就抽象级别而言,它们几乎完全相同。查询语法对普通人来说看起来更容易理解。

门诺