所以我一直在使用LINQ,我有一个问题.
我有一组对象.它们根据其属性值分为两类.我需要为一个组设置一个不同的属性,为另一个组设置一个方法:
foreach(MyItem currentItem in myItemCollection) { if (currentItem.myProp == "CATEGORY_ONE") { currentItem.value = 1; } else if (currentItem.myProp == "CATEGORY_TWO") { currentItem.value = 2; } }
或者,我可以这样做:
myItemCollection.Where(currentItem=>currentItem.myProp == "CATEGORY_ONE").ForEach(item=>item.value = 1); myItemCollection.Where(currentItem=>currentItem.myProp == "CATEGORY_TWO").ForEach(item=>item.value = 2);
我认为第一个更快,但认为检查不会有什么坏处.
只迭代一次集合(并且不调用任何代理,而不是使用尽可能多的迭代器)可能会稍微快一点,但我非常怀疑它是否会很重要.
编写完成工作的最易读的代码,只在问题出现时担心微观层面的性能(即容易改变的地方).
我认为在这种情况下,第一段代码更具可读性.LINQy少,但更具可读性.