c# - 创建 N 个对象并将它们添加到列表中

标签 c# linq

我有一个方法接收 N,即我要创建的对象的数量,我需要返回 N 个对象的列表。

目前我可以用一个简单的循环来做到这一点:

    private static IEnumerable<MyObj> Create(int count, string foo)
    {
        var myList = new List<MyObj>();

        for (var i = 0; i < count; i++)
        {
            myList .Add(new MyObj
                {
                    bar = foo
                });
        }

        return myList;
    }

我想知道是否还有其他方法,也许可以使用 LINQ 来创建此列表。

我试过:

    private static IEnumerable<MyObj> CreatePaxPriceTypes(int count, string foo)
    {
        var myList = new List<MyObj>(count);

        return myList.Select(x => x = new MyObj
            {
                bar = foo
            });

    }

但这似乎确实填充了我的列表。

我尝试将 select 更改为 foreach,但它是一样的。

我意识到该列表具有计数的容量,而 LINQ 没有找到任何要迭代的元素。

        myList.ForEach(x => x = new MyObj
        {
            bar = foo
        });

是否有正确的 LINQ 运算符可用于使其工作?还是我应该坚持使用循环?

最佳答案

您可以使用Range 来创建一个序列:

return Enumerable.Range(0, count).Select(x => new MyObj { bar = foo });

如果你想创建一个List,你必须ToList它。

不过请注意,它(可以说)是一个非显而易见的解决方案,所以暂时不要放弃创建列表的迭代方式。

关于c# - 创建 N 个对象并将它们添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122528/

相关文章:

c# - 使用 SQL Server 的本地数据库

c# - 在某处写入日志和数据的正确方法

c# - 尝试访问PSObject类的属性

c# - Microsoft Graph - 无法以静默方式获取 token

c# - 将 Enum.GetName(...) 合并到 Linq 查询中

c# - 在List<T>中选择整周没有休息日的记录 - C#

linq - 从 .NET 客户端使用 ADO.NET 数据服务的服务操作

c# - C#-进行特殊循环?

c# - 延迟执行中装饰器序列有什么用?

c# - 在 C# 中使用 Linq 验证枚举的所有值