Додавання списків до іншого списку 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.