首页 > 解决方案 > 如何将内部列表复制到新列表

问题描述

我有一个包含嵌套列表的列表,我想将一个列表复制到一个新列表中以便我可以使用它。我可以通过指定索引来获得我想要的列表,但我无法将它复制到我想要使用的新列表中。我只是不太确定这样做的最佳方法是什么。

如何将内部列表复制到新列表中,以便可以将其用作普通列表?

这是我尝试过的。

    public bool myMethod(List<Summary> summaries)
    {
        var listIndex = summaries[1];
        List<newList> newLists = new List<newList>();

        //this didn't work as ToList is giving error
        List<newList> copy = listIndex.ToList(); //error: Summary does not contain a defination for ToList

        //I tried this too it didn't work
        var newCopy = indexer.Select(p => new newList
        {
          //my mapping
        }).ToList();

        return true;
    }

包含所有列表的模型

public class Summary
{
    public IEnumerable<Model1> mylist1 { get; set; }
    public IEnumerable<Model2> mylist2 { get; set; }
    public IEnumerable<Model3> mylist3 { get; set; }
    public IEnumerable<Model4> mylist4 { get; set; }
}

我要复制到的新列表

public class newList
{
    public string Name { get; set; }
    public string Surname { get; set; }

    //more properties
}

型号1

public class Model2
{
    public string Name { get; set; }
    public string Surname { get; set; }

    //more properties
}

标签: c#listlinqarraylistcopy

解决方案


这是一个如何做到这一点的工作示例:


    public void TestIt()
    {

        //Create list and add some test values
        Summary summary = new Summary();
        summary.myList = new List<B>()
        {
            new B(){Name = "name1", Surname = "surname1"},
            new B(){Name = "name2", Surname = "surname2"},
            new B(){Name = "name3", Surname = "surname3"},
        };

        List<Summary> mySummaries = new List<Summary>();
        mySummaries.Add(summary);
        CopyList(mySummaries);
    }

    private void CopyList(List<Summary> summaries)
    {
        var summary = summaries.FirstOrDefault();
        if (summary != null)
        {
            //Copy the list
            List<A> A = new List<A>(summary.myList.ConvertAll(x => (A)x));

            //Do what ever you want with the copied list...
        }

    }

    public class Summary
    {
        public List<B> myList { get; set; }
    }

    public class A
    {
        public string Name;
        public string Surname;
    }

    public class B : A
    {

    }

推荐阅读