所以我已经使用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更少,但更具可读性。
关于c# - LINQ优化问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/714782/