我使用HtmlAgilityPack解析HTML頁面並從選擇列表中檢索若干選項元素。IEnumerable在沒有實際調用的情況下過濾發生的地方
的GvsaDivisions
是從POST的結果返回原始的HTML的方法,在這個問題
public IEnumerable<SelectListItem> Divisions(string season, string gender, string ageGroup)
{
var document = new HtmlDocument();
var html = GvsaDivisions(season);
document.LoadHtml(html);
var options = document.DocumentNode.SelectNodes("//select//option").Select(x => new SelectListItem() { Value = x.GetAttributeValue("value", ""), Text = x.NextSibling.InnerText });
var divisions = options.Where(x => x.Text.Contains(string.Format("{0} {1}", ageGroup, gender)));
if (ageGroup == "U15/U16")
{
ageGroup = "U15/16";
}
if (ageGroup == "U17/U19")
{
ageGroup = "U17/19";
}
return divisions;
}
的情況下不敬我正在觀察這是... ...一旦options.Where()
執行,分部包含單一結果。的ageGroup == "U15/U16"
測試和ageGroup = "U15/16"
的任務後,師現在包含3個結果(原件1,增加的2個新的匹配ageGroup
新價值的標準任何人都可以解釋這種反常現象?我有望使一個調用聯合新查詢結果的原始結果,但它似乎是自動發生的,雖然結果是我的願望,但我無法解釋它發生的方式(或者它會繼續的確定性)這樣的行爲)
你是LINQ延遲評估的受害者嗎?看看[這個問題](http://stackoverflow.com/questions/11352244/c-sharp-linq-delayed-execution) – Travis
看來,我是......我從來沒有真正以這種方式做過任何事情我正在改變比較變量的值。 –