Nối một nội dung danh sách vào danh sách khác C #


157

Tôi có những điều sau đây:

  1. Danh sách chính có tên GlobalStrings
  2. Một danh sách khác gọi là localStrings

Trong một vòng lặp chẳng hạn:

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
chồng chất lên dòng chảy luôn đá ... câu hỏi hay ...
Sangram Nandkhile

2
Bạn đang làm sai, localStrings = new List<string>;nên được đặt trước forvòng lặp
Wassim AZIRAR

1
Wassim, tôi nghĩ đó là lý do tại sao anh ta phân biệt giữa địa phương và toàn cầu; localStrings là cục bộ của phạm vi vòng lặp, GlobalStrings nằm trong phạm vi toàn cầu.
Dagroom

Đây là một ví dụ nghèo (mà lời mời hoàn toàn wrongheaded ý kiến như Wassim của), vì rõ ràng là bạn chỉ có thể Addđể GlobalStringsthay vì để localStrings. Và FWIW vòng lặp của bạn chỉ chạy 9 lần. Tốt hơn làfor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
Jim Balter

Câu trả lời:



55
GlobalStrings.AddRange(localStrings);

Điều đó làm việc.

Tài liệu : List<T>.AddRange(IEnumerable<T>).


2
Một nhân vật mất bạn một upvote. Được cảnh báo, nó thường mất bạn nhiều hơn nữa! (Giống như giấc ngủ hoặc sự tỉnh táo.)
deed02392

Trong khi chính xác, câu trả lời này bây giờ là một bản sao của câu trả lời của Lee.
Cœur

22

Hãy thử phương pháp AddRange:

GlobalStrings.AddRange(localStrings);

Trong khi chính xác, câu trả lời này bây giờ là một bản sao của câu trả lời của Lee.
Cœur

9

Với Linq

var newList = GlobalStrings.Append(localStrings)

3
Dường như không tồn tại? Bạn có một liên kết đến tài liệu MSDN cho nó?
Pod

2
Có lẽ bạn có nghĩa là Concat ... mặc dù điều đó có nghĩa là rất nhiều bản sao, và là một minh họa tốt về cách không sử dụng LINQ.
Jim Balter

5

Đây là ví dụ của tôi:

    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

nếu bạn muốn có được "terse" :)

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

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.