【发布时间】:2016-06-10 11:22:06
【问题描述】:
我有一个对象列表,我可以用那句话添加记录:
List<DragerClass.Alarm> alarms = new List<DragerClass.Alarm>();
public void createAlarm(int i, int[] alarms)
{
alarms.Add(new DragerClass.Alarm(i, DateTime.Now, DragerClass.Dedector.Dedector_Name[i] + " UNDER RANGE"))`;
}
但是当我尝试删除一个项目时,它的行为就像 lambda 表达式不支持:
public void removeAlarm(int i)
{
alarms.Remove(x => x.Dedector_No == i);
}
当我站在代码上时,我会看到该消息
无法将 lambda 表达式转换为类型 'Drager_GasDedection.DragerClass.Alarm' 因为它不是委托 输入
我使用的是 Visual Studio 2010,我还在参考资料中添加了System.Data.Entity。但还是一样。感谢您的帮助。
【问题讨论】:
-
@ASh 我现在用 RemoveAll 进行了尝试,现在消息是这样的“'Drager_GasDedection.DragerClass.Alarm' 不包含 'Dedector_No' 的定义,并且没有扩展方法 'Dedector_No' 接受第一个参数可以找到“Drager_GasDedection.DragerClass.Alarm”类型的(您是否缺少使用...)
-
我觉得你需要
alarms.RemoveAt(i); -
"i" 是项目的数量而不是列表的索引,所以 RemoveAt 没有帮助@MikeDebela
-
@CanESER,我认为您应该解释您要删除的什么(警报或检测器)并描述您的数据结构。但是将
Remove与谓词一起使用是不正确的 -
alarms.RemoveAll(x => x.Dedector_No == i);
标签: c# list object lambda generic-list