如何在C#中创建新对象列表?

时间:2017-03-30 05:29:00

标签: c# list object

我想为列表创建一个对象列表。我知道可以在下面这样做,但这不是我想要的。

view.BindingContext =
                new ViewModel
            { 
                List = new List<Section> {
                    new Section
                    {
                        Title = "Chapter 1",
                        List = new List<Reading> {
                            new Reading { Title = "Title" Text = "abc" },
                            new Reading { Title = "Title" Text = "abc" },
                            new Reading { Title = "Title" Text = "abc" },
                            new Reading { Title = "Title" Text = "abc" },
                            new Reading { Title = "Title" Text = "abc" },
                            new Reading { Title = "Title" Text = "abc" },
                            new Reading { Title = "Title" Text = "abc" },
                        }
                    },
                }
            };

我想从另一个对象列表中创建新对象,而不是上面的代码。所以这样的事情;

view.BindingContext =
            new ViewModel
            {
                List = new List<Section>
                {
                 foreach(Chapter chapter in ChapterList)
                    {
                    new Section { Title = chapter.Title, List = chapter.ReadingList },
                    }
                }
            };

2 个答案:

答案 0 :(得分:5)

好吧,你可以在初始构建之后循环。在一个陈述中做所有事都被高估了。

然而!

new List<Foo>(oldList.Select(x => new Foo { A = x.A, B = x.B, ... }))

应该作为列表和列表项的简单克隆,如下所示:

oldList.ConvertAll(x => new Foo { A = x.A, B = x.B, ...})

或(如评论中所述)

oldList.Select(x => new Foo { A = x.A, B = x.B, ... }).ToList()

答案 1 :(得分:-1)

您可以创建一个需要列出的新对象类型的全新列表。 对于章节列表中的每个项目,您可以创建一个新的列表元素并将其添加到新创建的列表中。因此,您可以为每个列表元素序列化或创建一个对象。

rightIconButton={participant.needHelp ? <rightIconMenu /> : <span />}