我有一個返回一個新的列表(它涉及到選擇題的答案)的方法:LINQ WHERE方法改變源集合
public static List<questionAnswer> GetAnswersWithSelections(this Questions_for_Exam__c question)
{
List<questionAnswer> answers = new List<questionAnswer>();
answers.Add(new questionAnswer() { Ordinal = 1, AnswerText = question.AN1__c, Selected = (bool)question.Option1__c });
...
return answers;
}
如果我考察這個方法的結果 - 我看到了正確的數據,例如紅色=假,綠=真,藍=假
然後我嘗試使用LINQ篩選返回的結果,其中擴展方法:
List<questionAnswer> CorrectSelections = question.GetAnswersWithSelections();
var tmpA = CorrectSelections.Where(opt => opt.Selected = true);
當我兌現TMPA,兩件事情發生:
- SOURCE列表中的數據發生變化 - 例如紅色=真,綠色= 真,藍=真
- 在TMPA的數據被設置爲相同的錯誤數據 的源列表已更改爲
任何想法?
把頭埋在恥辱......開始填寫麥當勞員工申請表 – RobD 2012-03-27 13:58:43
順便說一句,你的錯誤代碼不會改變源收集;它實際上正在改變存儲在集合中的項目。這是一個微妙而重要的區別。 – phoog 2012-03-27 14:07:37