2016-05-10 21 views
1

I String-Liste habenZusammenführen von zwei String-Listen, wenn das Kontrollkästchen aktiviert ist

string [] lines = {"1","2","3"}; 

Dann habe ich noch eine String-Liste

string [] linesTwo = {"2.1","2.2","2.3"}; 

Wie kann ich eine Kombination aus diesen Listen, wenn CheckBox1 geprüft? Wenn CheckBox1 geprüft würde Ich mag Liste haben wie:

{"1","2","2.1","2.2","2.3","3"} 

EDIT: Meine Listen enthalten keine eigentlich keine Zahlen so jede Sortierung ist nicht möglich.

+0

Können Sie diese URL überprüfen http://stackoverflow.com/questions/1547252/how-do-i-concatenate-two-arrays-in-c – vinodh

Antwort

1

Ich habe Code für Ihr Problem geschrieben. Ich sortiere nur das Array, indem ich das Sort-Attribut für die genaue Ausgabe verwende.

string [] lines = {"1","2","3"}; 
    string [] linesTwo = {"2.1","2.2","2.3"}; 
    var CombinedString = new string[lines.Length + linesTwo.Length]; 

    Array.Sort<string>(CombinedString); 



    if(CheckBox1.Checked) 
     { 
      lines.CopyTo(CombinedString , 0); 
      linesTwo.CopyTo(CombinedString , lines.Length); 
      Array.Sort<string>(CombinedString); 
     } 

Fiddle Code here..Check this way

+0

Gibt es anders als Sortieren? Wenn Listen keine Zahlen enthalten und ich möchte immer noch LinesTwo in der 3. Zeile beginnen und auch diese "3" am Ende haben. Ich könnte String "Linien" zu zwei verschiedenen Stücken trennen, aber ich fühle nicht, dass es richtig ist. – kah

+0

Wenn ich Ihre Anforderung richtig verstehe, MÜSSEN Sie Zeilen hinzufügenZwei Zeichenfolge hinzufügen innerhalb der ersten Zeichenfolge-Array nach 2 Elementen ...? Können Sie bitte Ihre Frage beantworten .. :) – vinodh

+0

Ja. Zuerst habe ich versucht, wenn es hilft zu verstehen. Zeilen = {"1", "2", Zeilenzwei, "3"} – kah

0

Verbinden Sie die beiden und sortieren Sie die Elemente.

var newline = lines.Concat(linesTwo).OrderBy(i => i); 
0

Sie verwenden diese zwei Listen des gleichen Typs zu fusionieren:

list = list1.Concat(list2).ToList(); 
0

Das weitgehend davon abhängt, wie Sie eingerichtet ist, anzuzeigen. Angenommen, Sie WPF verwenden, könnten Sie ein CompositeCollection verwenden:

<CompositeCollection> 
    <ColectionContainer Source="{Binding listOne}" /> 
    <ColectionContainer Source="{Binding listOne}" /> 
</CompositeContainer> 

Wenn Sie nicht WPF verwenden, ist es wahrscheinlich, müssen Sie diese manuell steuern, indem Sie auf die Box zu einem Ereignis abonnieren:

public void Checkbox1_Checked(...) { 
    combinedList = lines.Concat(linesTwo); 
    ... 
} 

Wenn Sie ein wenig mehr Informationen darüber geben können, was Sie zu tun versuchen, können wir vielleicht noch ein wenig mehr helfen: Mit welchem ​​Code wird Ihr Kontrollkästchen erstellt? Wie werden diese Listen verwendet?

0

Wenn Sie fragen, wie das als auf Webformulare zu tun:
1) Stellen Sie Ihre Textbox Autopostback
2) erzeugen Ereignis CheckedChanged unter
3)-Code-Code ist in diesem Fall

protected void CheckBox1_CheckedChanged(object sender, EventArgs e)//checkbox name CheckBox_1 
{ 
      string[] merged; 
      string[] lines = { "1", "2", "3" }; 
      string[] linesTwo = { "2.1", "2.2", "2.3" }; 
      if(CheckBox1.Checked) // check is checkbox checked 
      { 
       merged = lines.Concat(linesTwo).ToArray(); // merge 
      } 

} 
0

Linq mitConcat Sie die beiden Arrays verketten können. Dann müssen Sie sie sortieren OrderBy verwenden,

var newline = lines.Concat(linesTwo).OrderBy(i => i).ToArray(); 
Verwandte Themen