c# - Linq重复创建空对象?

标签 c# linq

有没有办法做到以下几点:

var newObjects = Enumerable.Repeat(new MyClass(), 10);
myList.AddRange(newObjects);

上面显然不行,因为同一个实例被添加了10次。但是,是否有类似的东西可以使用,或者我是否需要使用 for 循环?

最佳答案

一个简单的解决方案是在 Enumerable.Repeat 中放置一个占位符,然后使用投影来构造您的实例:

var newObjects = Enumerable.Repeat(0, 10).Select(x => new MyClass());

注意:在您提供的示例中,您将立即使用 newObjects,因此将其设为 IEnumerable 应该没问题。通常,请注意不要多次枚举 newObjects,否则您可能会产生额外的 MyClass 意外实例的副作用。由于此表达式具有构造实例的副作用,因此最好立即使用 ToListToArray 实现它。

关于c# - Linq重复创建空对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36770752/

相关文章:

c# - ElasticSearch & Nest - 错误的转换

c# - 使用自定义条件和分隔符拆分字符串

c# - Enumerable.Last() 抛出 InvalidOperationException "Sequence contains no matching element"

c# - 如何从 OneDrive 下载文件

c# - 如何在asp.net中的PostBack页面中接收值?

c# - 使用命名管道的 C++ 和 C# 通信

c# - 曾经用 C# 完全重写过大型 C++ 应用程序吗?

c# - 在 linq 中使用不同的选择进行分组

c# - List<Object> 到层次结构

c# - LINQ 实体在运行时构建查询 'The parameter is not in scope.' LinqKit