2013-08-14 2 views
1

Я пытаюсь вернуть все данные из списка, который содержит более 30 элементов. По какой-то причине мой код дает мне только последний элемент списка. Я уверен, что это простое решение, но если кто-нибудь сможет мне помочь, это будет здорово. Вот код.Только получение последнего элемента в списке

List<string> propnumList = new List<string>(); 
foreach (DataRow drRow in ds7.Tables[0].Rows) 
{ 
    for (int i = 0; i < ds7.Tables[0].Columns.Count; i++) 
    { 
     propnumList.Add(drRow[i].ToString()); 
    } 
} 

using (StreamWriter sw = new StreamWriter("propnumList.txt")) 
{ 
    foreach (string s in propnumList) 
    { 
     sw.WriteLine(s); 
    } 
} 

string tempProp = ""; 
foreach (string x in propnumList) 
{ 
    if (x.Length < 30) 
    { 
     x.Equals(null); 
    } 
    else 
    { 
     tempProp = x.Substring(31); 
     using (StreamWriter write = new StreamWriter("PROPNUMTEST.txt")) 
     { 
      write.WriteLine(tempProp); WANT TO RETURN MORE THAN JUST LAST ITEM 
     } 
    } 
} 
+1

Предупреждение о предупреждениях: 'x.Equals (null);' будет генерировать исключение с нулевой ссылкой, если «x» всегда имеет значение null. – Caleb

ответ

15

Вы переписываете свой выходной файл на каждой итерации. Место открытия файла за пределами foreach.

using (StreamWriter write = new StreamWriter("PROPNUMTEST.txt")) 
{ 
    foreach (string x in propnumList) 
    { 
    .... 
    } 
} 
+4

и не уверен, что означает op из 'x.Equals (null);' –

+0

Я думаю, что это из-за 'x.Substring (31);' для предотвращения исключения из исключения Exception – Guigui

+0

@Guigui: правильно, но 'x .Equals (null) 'сам по себе ничего не делает. Получившийся «bool» выброшен. – zimdanen

Смежные вопросы