When using .ForEach to update the RemarkText property in an object. It is updating the RemarkText property value on the remarksToDeleteandendTransactionResponse` property.
private List<Remark> GetElementsToDelete(Gds.Response.CreateResponse endTransactionResponse, List<Remark> ticketRemarks, List<Remark> elementsToAdd)
{
var remarksToDelete = new List<Remark>();
foreach (var ticketRemark in ticketRemarks)
{
ticketRemark.RemarkText = TrimEnd(ticketRemark.RemarkText);
var remarks = endTransactionResponse.Remarks.Where(
x => x.RemarkType == ticketRemark.RemarkType
&& (x.RemarkType == RemarkTypes.END || this.remarkText.Any(x.RemarkText.ToUpper().Contains))
&& x.GdsReference != null
&& !string.IsNullOrEmpty(x.GdsReference.GdsReferenceId));
if (remarks.Any())
{
remarks.Where(x => !x.RemarkText.Contains(PassengerTypes.INF.ToString()))
.ToList()
.ForEach(x => x.RemarkText = ticketRemark.RemarkText);
remarksToDelete.AddRange(remarks);
}
else
{
elementsToAdd.Add(ticketRemark);
}
}
return remarksToDelete;
}
I tried to use ToList() with endTransactionResponse.Remarks.Where(...).ToList(), also tried to add new list new List(newRemarks), I also tried to use .Select(x => { x.RemarkText = ticketRemark.RemarkText; return x }); but none work for me.
Why this is happening? How can we fix the problem?
The response will be highly appreciated.