gpt4 book ai didi

c# - 通用列表 RemoveAll 和 lambda 表达式

转载 作者:太空宇宙 更新时间:2023-11-03 14:34:09 25 4
gpt4 key购买 nike

我显然在这里遗漏了一些东西......我有一个通用的对象列表,我正在尝试使用 lambda 表达式来删除项目。当我使用下面发布的代码时,出现以下异常。

System.InvalidOperationException: Sequence contains no matching element

public class MyObject {
public Guid ID1 {get;set;}
public int ID2 {get;set;}
}

public class MyContainer{
List<MyObject> myList = new List<MyObject>();

public MyObject Get(Guid id1) {
return myList.Single(mo => mo.ID1 == id1);
}

public void AddItem(MyObject item) {
myList.Add(item);
}

public int RemoveItems(MyObject item) {
return myList.RemoveAll(mo => mo.ID1 == item.ID1 || mo.ID2 == item.ID2);
}
}

我是否在使用 lambda 时犯了错误?

[编辑]第一个问题失败了。我误读了堆栈跟踪,在我的单元测试中删除了该项目后,我尝试调用 Get() 方法,并且在我的“为什么它已经黑了”的愤怒中,在没有适当分析的情况下发布了一个问题。对不起。

最佳答案

"Sequence contains no matching element" 更像是一个 First(predicate)Single(predicate) 的事情...我不会不要期望从 RemoveAll 中看到这一点。您确定它在发布的代码中吗?

行:

new MyContainer().RemoveItems(new MyObject { ID1 = Guid.Empty, ID2 = 2 });

运行没有任何错误。我想知道您是否正在调用类似的内容:

col.RemoveItems(someQuery.Single(predicate));

碰巧 someQuery 是空的。

关于c# - 通用列表 RemoveAll 和 lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1718413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com