【发布时间】:2017-08-19 16:07:46
【问题描述】:
我试图从一个方法返回列表。但我只得到列表中的最后一个迭代数据。我在哪里犯了错误?它会覆盖列表中每个循环的数据。
public class ProjectData
{
public string name { get; set; }
public string id { get; set; }
public string web_url { get; set; }
}
public static List<ProjectData> GetProjectList()
{
int pageCount = 0;
bool check = true;
List<ProjectData> copy = new List<ProjectData>();
List<ProjectData> projectData = new List<ProjectData>();
while (check)
{
ProjectData NewProjectData = new ProjectData();
pageCount = pageCount + 1;
string userURL = "http://gitlab.company.com/api/v3/groups/450/projects?private_token=token&per_page=100&page=" + pageCount;
HttpWebRequest requestforuser = (HttpWebRequest)WebRequest.Create(userURL);
HttpWebResponse responseforuser = requestforuser.GetResponse() as HttpWebResponse;
using (Stream responseStream = responseforuser.GetResponseStream())
{
StreamReader reader = new StreamReader(responseStream, Encoding.UTF8);
var JSONString = reader.ReadToEnd();
projectData = JsonConvert.DeserializeObject<List<ProjectData>>(JSONString);
if (JSONString == "[]")
{
check = false;
break;
}
}
copy = projectData.ToList();
}
return copy;
}
我知道有超过 300 条数据可供填写。我使用断点检查了它。在那,我发现所有数据都正确获取。但它没有被复制到copy<>list。每次都在copy<> 列表中被覆盖。如何防止过度写入?
【问题讨论】: