Tengo un método que devuelve una nueva lista (que se refiere a una respuesta de opción múltiple):LINQ DONDE método modifica colección de origen
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;
}
Si examino el resultado de este método - Veo los datos correctos, p.ej Rojo = False, Verde = True, Azul = False
entonces trato de filtrar el resultado devuelto utilizando el LINQ Dónde método de extensión:
List<questionAnswer> CorrectSelections = question.GetAnswersWithSelections();
var tmpA = CorrectSelections.Where(opt => opt.Selected = true);
Cuando materializo Tmpa, 2 cosas:
- Los datos en la lista SOURCE cambian - Ej. red = true, Verde = Es cierto, azul = True
- Los datos de Tmpa se establece en los mismos datos erróneos que la lista de origen se ha cambiado a
¿Alguna idea?
Cuelga la cabeza en la vergüenza ... comienza a llenar el formulario de solicitud de personal de MacDonalds – RobD
Como un lado, su código de error no altera la colección de origen; en realidad está alterando los elementos almacenados en la colección. Esta es una diferencia sutil pero importante. – phoog