リストを初期化するための構文< T>既存のリスト< T>オブジェクト

StackOverflow https://stackoverflow.com/questions/1404832

質問

C#でリストを他のリストで初期化することは可能ですか?リストにこれらを持っているとしましょう:

List<int> set1 = new List<int>() {1, 2, 3};
List<int> set2 = new List<int>() {4, 5, 6};

私が持ちたいのは、このコードの略記です:

List<int> fullSet = new List<int>();
fullSet.AddRange(set1);
fullSet.AddRange(set2);

事前に感謝します!

役に立ちましたか?

解決

(例のように)要素の重複を許可するには:

List<int> fullSet = set1.Concat(set2).ToList();

これは、より多くのリスト、つまり ... Concat(set3).Concat(set4)に一般化できます。重複する要素(両方のリストに表示されるアイテム)を削除する場合:

List<int> fullSet = set1.Union(set2).ToList();

他のヒント

        static void Main(string[] args)
        {
            List<int> set1 = new List<int>() { 1, 2, 3 };
            List<int> set2 = new List<int>() { 4, 5, 6 };

            List<int> set3 = new List<int>(Combine(set1, set2));
        }

        private static IEnumerable<T> Combine<T>(IEnumerable<T> list1, IEnumerable<T> list2)
        {
            foreach (var item in list1)
            {
                yield return item;
            }

            foreach (var item in list2)
            {
                yield return item;
            }
        }
var fullSet = set1.Union(set2); // returns IEnumerable<int>

リストが必要な場合&lt; int&gt; IEnumerable&lt; int&gt;の代わりにあなたができる:

List<int> fullSet = new List<int>(set1.Union(set2));
List<int> fullSet = new List<int>(set1.Union(set2));

動作する可能性があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top