2016-08-11 9 views
2

Ich habe die beiden Listekann nicht von 'string' in 'System.Collections.Generic.List string' konvertieren

  1. verschachtelte Liste von String und
  2. Liste in string

In index Liste möchte ich linesOfContent mit einem common Mehrwert zu schaffen und zwischen i ":" separaten Zeichenfolge hinzufügen möchten.

Dafür habe ich einen Code schreiben, aber, das Gesicht ich ein Problem „kann von‚string‘auf‚System.Collections.Generic.List string‘nicht konvertieren“. Wie man das löst.

int common = 10; 
List<List<string>> index = new List<List<string>>(); 
List<int> linesOfContent = new List<int>(); 
for(int i = 0; i < 5; i++) 
{ 
     for(int j = 0; j < 5; j++) 
     {  
      linesOfContent.Add(i+":"+common); 
     } 
     index.Add(linesOfContent); 
} 

Erwartete Ausgabe:

index[0][0] = 0:10 
index[0][1] = 1:10 
index[0][2] = 2:10 

... ...

+0

Können Sie die erwarteten Ergebnisse innerhalb '' Index Liste zeigen? – user3185569

+0

@ shad0wk Ich möchte ein Ergebnis wie in erwartete Ausgabe. –

Antwort

2

A List von Lists der Zeichenfolge sollte Lists von string, nicht Lists von int enthalten.

int common = 10; 
List<List<string>> index = new List<List<string>>(); 
List<string> linesOfContent = new List<string>(); 
for(int i = 0; i < 5; i++) 
{ 
    for(int j = 0; j < 5; j++) 
    {  
     linesOfContent.Add(i.ToString() +":"+common.ToString()); 
    } 
    index.Add(linesOfContent); 
} 
1

Jedes Element in Ihrer index Liste ist ein List<string>. Wenn Sie versuchen, ein Element hinzuzufügen, sollte es eine Liste sein. Allerdings versucht man, eine Zeichenfolge, um es hinzuzufügen, wird linesOfContent+":"+common ein String betrachtet.

Lösung:

der Linq Select Methode (auch bekannt als Projektion) verwendet werden kann, um jedes Element innerhalb einer Sequenz zu transformieren:

index.Add(linesOfContent.Select(x=> x.ToString() + ":" + common).ToList()); 

Seien Sie sich bewusst, dass die Art und Weise Sie Ihre Loops Ergebnisse sind die Konstruktion in einige doppelte Datensätze.

0

Hier ist der Code, ohne die foreach-Schleifen, stattdessen verwendet es Enumerable.Range:

linesOfContent.AddRange(Enumerable.Range(0, 5).Select(i => i.ToString() + ":" + common.ToString()).ToArray()); 
index.Add(linesOfContent); 
Verwandte Themen