我有一個列表包含10個不同記錄的行。我在C#控制檯應用程序中循環這個列表,並將值插入到另一個列表中,但它只選取第一條記錄並將其插入新列表中10次。C#奇怪的問題 - 無法賦值從右到左變量
當我調試時,唯一值顯示在循環中,但它們沒有被分配給左變量。
List<Job> jobList=new List<Job>();
foreach (var row in rows)
{
Job job = new Job();
job.Title = row.SelectSingleNode("//h2[@class='jobtitle']").ChildNodes[1].Attributes["title"].Value;
job.summary = row.SelectSingleNode("//span[@class='summary']").InnerText
jobList.add(job);
}
任何想法,發生了什麼?
我也用垃圾收集器,但依然沒有起色:
job = null;
GC.Collect();
GC.WaitForPendingFinalizers();
下面是@Andrew建議後更新的代碼,但沒有奏效。右側保存更新的值,但它們沒有被分配給左側變量。
foreach (var row in rows)
{
try
{
var job = new Job();
var title = row.SelectSingleNode("//h2[@class='jobtitle']").ChildNodes[1].Attributes["title"].Value;
var company = row.SelectSingleNode("//span[@class='company']").InnerText.Replace("\n", "").Replace("\r", "");
var location = row.SelectSingleNode("//span[@class='location']").InnerText.Replace("\n", "").Replace("\r", "");
var summary = row.SelectSingleNode("//span[@class='summary']").InnerText.Replace("\n", "").Replace("\r", "");
job.Title = title;
job.Company = company;
job.Location = location;
job.Summary = summary;
jobList.Add(job);
job = null;
GC.Collect();
GC.WaitForPendingFinalizers();
counter++;
Status("Page# " + pageNumber.ToString() + " : Record# " + counter + " extracted");
}
catch (Exception)
{
AppendRecords(jobList);
jobList.Clear();
}
//save file
}
問題在於如何從XML檢索值 - 你總是檢索相同的值 – Fabio
@Fabio - OP想要從每一行檢索相同的值,並且代碼(乍一看)看起來應該是這樣做的。 – ChrisF
@Fabio我正在使用HtmlAgilityPack來檢索值和該部分工作正常,因爲我已經確保在調試過程中。問題是價值沒有被分配到右側。 這裏有截圖,你可以看到自己 [試玩截圖](http://screencast.com/t/ZZliIrkXktqq) – Hamad