ผนวกเนื้อหาของรายการไปยังรายการอื่น 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
Wassim ฉันคิดว่านั่นเป็นเหตุผลที่เขาแยกความแตกต่างระหว่างท้องถิ่นและระดับโลก localStrings เป็นโลคัลสำหรับขอบเขตลูป, GlobalStrings อยู่ในขอบเขตโกลบอล
Dagrooms

นี้เป็นตัวอย่างที่ไม่ดี (ที่เชิญ wrongheaded ทั้งหมดความคิดเห็นเช่น Wassim ของ) เนื่องจากเห็นได้ชัดว่าคุณก็สามารถAddที่จะแทนที่จะเป็นGlobalStrings localStringsและ FWIW คุณวนซ้ำเพียง 9 ครั้งเท่านั้น น่าจะดีกว่าfor (int x = 0; x < 10; ++x) {var localStrings = GetAListOfStrings(); /* append those to GlobalStrings */}
Jim Balter

คำตอบ:



55
GlobalStrings.AddRange(localStrings);

ที่ได้ผล

เอกสาร: List<T>.AddRange(IEnumerable<T>).


2
ตัวละครตัวหนึ่งทำให้คุณแพ้การโหวต ได้รับการเตือนก็มักจะสูญเสียคุณมากขึ้น! (เช่นนอนหลับหรือมีสุขภาพดี)
deed02392

ในขณะที่ถูกต้องคำตอบนี้ยืนเป็นคำตอบที่ซ้ำกันของ Lee
Cœur


9

ด้วย Linq

var newList = GlobalStrings.Append(localStrings)

3
ดูเหมือนจะไม่มีผนวกอยู่หรือ คุณมีลิงค์ไปยัง MSDN doc หรือไม่
พ็อด

2
บางทีคุณอาจหมายถึง Concat ... แม้ว่านั่นจะหมายถึงการคัดลอกจำนวนมากและเป็นตัวอย่างที่ดีว่าจะไม่ใช้ LINQ อย่างไร
Jim Balter

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

ถ้าคุณต้องการได้รับ "terse" :)

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

for(int x=1; x<10; x++) GlobalStrings.AddRange(new List<string> { "some value", "another value"});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.