我试图在我链接linq方法时,特别是在多次链接相同方法时,绕过C#编译器执行的操作。了解C#编译器如何处理链接linq方法
简单示例:假设我试图根据两个条件筛选一个整数序列。
最明显的事情是这样的:
IEnumerable<int> Method1(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0 && i % 5 == 0);
}
但我们可以也链条,其中的方法,在每一个条件:
IEnumerable<int> Method2(IEnumerable<int> input)
{
return input.Where(i => i % 3 == 0).Where(i => i % 5 == 0);
}
我有一个在Reflector中查看IL;这是两种方法明显不同,但进一步分析它超出了我的知识,此刻:)
我想了解一下:
一)编译器在每个实例做什么不同,为什么。
B)是否有任何性能问题(不是要微观优化;!只是好奇)
好的答案。我们需要更多像Stackoverflow这样的材料。 – 2010-11-12 03:53:07