且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将多个列表复制到1个列表中

更新时间:2022-11-04 13:27:04

你可以使用 AddRange [ ^ ]如果您不想使用linq属性:



You can use AddRange[^] property if you don''t want to use linq:

var l1 = new List<string> {"a", "b"};
var l2 = new List<string> {"c", "d"};

var res = new List<string>();
res.AddRange(l1);
res.AddRange(l2);


Union()扩展方法。



newList = list1.Union(list2).Union(list3);



我应该指出Union()过滤掉重复项。如果你想要重复或知道有nonde,请使用Concat()。
the Union() extension method.

newList = list1.Union(list2).Union(list3);

I should point out that Union() filters out duplicates. If you want duplicates or know there are nonde, use Concat().


你可以试试这个 C#2.0 解决方案(这里不需要LINQ)。 />
You can try this C# 2.0 solution (no LINQ is required here).
using System;
using System.Collections.Generic;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            // Create sample lists
            var list1 = new List<string> { "A", "B", "C" };
            var list2 = new List<string> { "D", "E" };
            var list3 = new List<string> { "F", "G", "H" };

            // "Concatenate" lists into one enumeration
            var e4 = ConcatLists(list1, list2, list3);

            // Create one list from enumerable sequence
            var l4 = new List<string>(e4);

            // Print items
            foreach (var item in l4)
                Console.WriteLine(item);

            // Wait
            Console.ReadKey();
        }

        public static IEnumerable<T> ConcatLists<T>(params List<T>[] lists)
        {
            foreach (var list in lists)
            {
                foreach (var item in list)
                {
                    yield return item;
                }
            }
        }
    }
}