所以我已经使用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/

10-08 23:19