I’m trying to use a lambda expression to remove a certain object from a list, based on a value within that object. Here is my lambda:
ChartAttributes.ToList().RemoveAll(a => a.AttributeValue.Contains("PILOT"));
Here is the ChartAttributes list
IList<IChartAttribute> ChartAttributes
Here is the object ChartAttribute contained within the above list
public virtual string AttributeKey { get; set; }
public virtual string AttributeValue { get; set; }
public virtual int ChartAttributeId { get; set; }
public virtual int ChartSpecificationId { get; set; }
There is a chart attribute with its AttributeKey set to “PILOT”. But this never gets removed. What am I doing wrong?
Thanks
Your code is taking an
IEnumerable, copying all of its elements into a list and then removing items from that copy. The sourceIEnumerableis not modified.Try this:
EDIT
Actually a better way, without needing to call
ToList: