如何使用linq替换foreach

15 浏览
0 Comments

如何使用linq替换foreach

如何使用Linq替换上面的foreach循环。

我尝试了以下代码,但它返回item的null值。

注意:items的类型是IEnumerable

_ = items.ToList().ForEach(x => x.category = "All Items");

或者,您可以使用以下代码:

items = items.Select(x => { x.category = "All Items"; return x; }).ToList();

0
0 Comments

如何用LINQ替换foreach

在使用LINQ时,尽量避免使用副作用,以保持其函数式编程的特性。副作用是指在代码中修改变量的值,而不是返回一个新的值。下面是一个使用foreach在列表中进行操作的例子:

foreach(var item in items)
{
    item.category = "All Items";
}

上述代码中,通过修改item的category属性的值来达到修改列表的目的。然而,在LINQ中,应该避免这样的副作用,而是通过创建一个新的数据集来达到相同的目的。

下面是使用LINQ替换上述代码的方法:

items = items.Select(item => new { category = "All Items", x = item.x, y = item.y }).ToList();

在上述代码中,通过使用Select方法,创建一个新的匿名对象,其中category属性被设置为"All Items",而x和y属性则分别从原始列表的item中复制。最后,通过ToList方法将结果转换为列表。

通过这种方法,我们避免了直接在LINQ语句中修改变量的值,而是通过创建一个新的数据集来达到相同的效果。这样做不仅符合LINQ的函数式编程特性,而且使代码更加清晰和易于维护。

0