我正在尝试使用lambda表达式根据该对象内的值从列表中删除该对象。这是我的lambda:
ChartAttributes.ToList().RemoveAll(a => a.AttributeValue.Contains("PILOT"));
这是ChartAttributes列表
IList<IChartAttribute> ChartAttributes
这是上面列表中包含的对象ChartAttribute
public virtual string AttributeKey { get; set; }
public virtual string AttributeValue { get; set; }
public virtual int ChartAttributeId { get; set; }
public virtual int ChartSpecificationId { get; set; }
有一个图表属性,其AttributeKey设置为“PILOT”。但这永远不会消除。我究竟做错了什么?
谢谢
最佳答案
您的代码采用IEnumerable
,将其所有元素复制到列表中,然后从该副本中删除项目。源IEnumerable
未被修改。
试试这个:
var list = ChartAttributes.ToList();
list.RemoveAll(a => a.AttributeValue.Contains("PILOT"));
ChartAttributes = list;
编辑
实际上是一种更好的方法,无需调用
ToList
:ChartAttributes = ChartAttributes.Where(a => !a.AttributeValue.Contains("PILOT"));
关于c# - 使用RemoveAll从列表中删除项目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6523136/