Додавання списків до іншого списку C #


157

У мене є таке:

  1. Основний список під назвою GlobalStrings
  2. Інший список називається localStrings

У циклі, наприклад:

List<string> GlobalStrings = new List<string>(); 
List<string> localStrings = new List<string>();
for(x=1;x<10;x++)
{
    localStrings.Add("some value"); 
    localStrings.Add("some value");
}
// Want to append localStrings to GlobalStrings as easily as possible

3
стек над потоком завжди скелі ... приємне питання ...
— Sangram Nandkhile

2
Ви робите це неправильно, localStrings = new List<string>;слід поставити його перед forциклом
— Wassim AZIRAR

1
Вассиме, я думаю, що саме тому він розрізняє локальне та глобальне; localStrings є локальним для сфери for-loop, GlobalStrings - у глобальному масштабі.
— Dagrooms

Це поганий приклад (який пропонує абсолютно не має сенсу коментарі як Wassim в), так як очевидно , що ви могли б просто , Addщоб GlobalStringsзамість того , щоб localStrings. І FWIW ви циклу виконуєте лише 9 разів. Краще було бfor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
— Джим Балтер

Відповіді:


256
GlobalStrings.AddRange(localStrings);

Примітка: Ви не можете оголосити об'єкт списку за допомогою інтерфейсу (IList).
Документація: List<T>.AddRange(IEnumerable<T>).


55
GlobalStrings.AddRange(localStrings);

Це працює.

Документація: List<T>.AddRange(IEnumerable<T>).


2
Один персонаж втратив вам нагороду. Будьте попереджені, це часто втрачає вас набагато більше! (Як сон чи розсудливість.)
— deed02392

Хоча правильна, ця відповідь тепер стоїть як дублікат відповіді Лі.
— Cœur

22

Спробуйте метод AddRange:

GlobalStrings.AddRange(localStrings);

Хоча правильна, ця відповідь тепер стоїть як дублікат відповіді Лі.
— Cœur

9

З Лінком

var newList = GlobalStrings.Append(localStrings)

3
Здається, додаток не існує? У вас є посилання на MSDN doc для нього?
— Под

2
Можливо, ви мали на увазі Concat ... хоча це означало б багато копіювання, і це хороша ілюстрація того, як не використовувати LINQ.
— Джим Балтер

5

Ось мій приклад:

    private List<int> m_machinePorts = new List<int>();

    public List<int> machinePorts
    {
        get { return m_machinePorts; }
    }

    Init()
    {
        // Custom function to get available ethernet ports
        List<int> localEnetPorts = _Globals.GetAvailableEthernetPorts();

        // Custome function to get available serial ports
        List<int> localPorts = _Globals.GetAvailableSerialPorts();

        // Build Available port list 
        m_machinePorts.AddRange(localEnetPorts);
        m_machinePorts.AddRange(localPorts);
     }

2

якщо ви хочете отримати "короткий" :)

List<string>GlobalStrings = new List<string>(); 

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.