I tested two ways, using three lists to add to a bigger list, then clearing one to see if the larger list still contained the added values, then by using a single small list in a loop to add to the bigger list which gets destroyed after each iteration... both tests seem to leave all the values added in the big list. Do these two test no accurately reflect what you are basically trying to do?

Code:
        static void Test1()
        {
            List<int> BigList = new List<int>();

            List<int> smallOnes = new List<int>();
            List<int> smallTwos = new List<int>();
            List<int> smallThrees = new List<int>();

            for (int val = 10; val < 20; val++) smallOnes.Add(val);
            for (int val = 20; val < 30; val++) smallTwos.Add(val);
            for (int val = 30; val < 40; val++) smallThrees.Add(val);

            BigList.AddRange(smallOnes);
            BigList.AddRange(smallTwos);
            BigList.AddRange(smallThrees);

            smallTwos.Clear();

            foreach (int val in BigList)
                Console.WriteLine(val);
        }
        static void Test2()
        {
            List<int> BigList = new List<int>();

            for (int i = 1; i < 4; i++)
            {
                List<int> smallList = new List<int>();
                for (int val = i*10; val < ((i*10) + 10); val++) smallList.Add(val);
                BigList.AddRange(smallList);
            }

            foreach (int val in BigList)
                Console.WriteLine(val);
        }