我有一个包含一些对象的列表,并希望使用LINQ删除特定项目但不知道如何做到这一点.
foreach (var someobject in objectList)
{
    if (someobject.Number == 1) // There will only one item where Number == 1.  
    {
        list.remove(someobject)
    } 
}
Tim*_*ter 28
你不能使用foreach删除项枚举过程中,你要在运行时异常.
你可以使用List.RemoveAll:
list.RemoveAll(x => x.Number == 1);
或者,如果它实际上不是List<T>任何序列,LINQ:
list = list.Where(x => x.Number != 1).ToList();
如果您确定只有一个项目具有该数字,或者您想要最多删除一个项目,您可以使用另一个答案中建议的for循环方法或:
var item = list.FirstOrDefault(x => x.Number == 1);
if(item ! = null) list.Remove(item);
我发布的其他问题的链接表明您可以在C#4及更高版本的枚举期间修改集合.不,你不能.这仅适用于新的并发集合.