[英]Is there a more succinct way of adding items to a collection property using LINQ?
有没有一行LINQ语句可以代替下面的代码中的foreach循环?
public static ReplaceItemsOnOrder(Order order, List<OrderItem> replacements)
{
order.Items.Clear();
foreach (var item in replacements)
{
order.Items.Add(item);
}
}
编辑:
这是Order
类的简化定义:
public class Order
{
private Collection<OrderItem> _items = new Collection<OrderItem>();
public Collection<OrderItem> Items
{
get { return _items; }
}
}
您可以编写以下内容:
order.Items.Clear();
replacements.ForEach(order.Items.Add);
或者,如果有addRange方法(在List<T>
上可用):
order.Items.Clear();
order.Items.AddRange(replacements);
是order.Items
清单吗? 你可以有:
public static ReplaceItemsOnOrder(Order order, List<OrderItem> replacements)
{
order.Items = new List<OrderItem>(replacements);
}
这是有道理的,因为在您的示例代码中,您似乎正在替换 order.Items
的项目。 List<T>
有一个构造函数 , 该构造函数接受IEnumerable<T>
参数,该参数的内容将被复制到正在构造的列表中。
从某种意义上讲,如果在构造时发生错误(包括复制操作),则不会导致新列表半满,这也更安全。
不,Linq是关于选择而不是修改。
您可以编写自己的扩展方法来添加此功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.