gpt4 book ai didi

c# - 在 Linq 与 foreach 循环中调用 HashSet.Add(item)

转载 作者:太空宇宙 更新时间:2023-11-03 19:21:54 24 4
gpt4 key购买 nike

在以下代码段中需要帮助:

static void Main(string[] args)
{
var customers = new HashSet<Customer>();
var action = new Action(() =>
{
var innerCustomers = new Customer[]
{
new Customer { CustomerID = 1, CustomerName = "C 1" },
new Customer { CustomerID = 2, CustomerName = "C 2" },
};

innerCustomers.Select(c => customers.Add(c)); //doesn't work

foreach (var customer in innerCustomers)
customers.Add(customer); //works fine
});

action();
}

innerCustomers.Select(c => customers.Add(c)); 似乎无法在“客户”集合中插入记录,但是,“foreach”低于该集合线工作正常。有人知道为什么它在 linq 中不起作用吗?我知道我没有从选择方法中选择任何东西

最佳答案

Select它,但不要对结果做任何事情。由于 LINQ 的惰性计算(它通过 IEnumerable 按需生成结果),它不会被执行。使用 foreach循环,这是最干净的解决方案。

(另一种解决方案是改用 List<Customer> 并在其上调用 ForEach...但除非您有充分的理由想要使用带回调的方法,否则没有任何优势。)

编辑:实际上,如果您所做的只是向 HashSet 添加元素, 最干净的解决方案是 UnionWith :

customers.UnionWith(innerCustomers);

关于c# - 在 Linq 与 foreach 循环中调用 HashSet.Add(item),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639535/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com