C# 在C中使用IEnumerator从集合中删除元素#

C# 在C中使用IEnumerator从集合中删除元素#,c#,C#,我需要从C#中的列表中删除一个元素。从前面提供的答案来看,要实现这一点,似乎必须向后循环整个集合。但是,我有一个IEnumerator来迭代列表中的元素。 代码如下: IEnumerator<Solution> iterator = solutionsList_.GetEnumerator(); while (iterator.MoveNext()) { Solution element = iterator.

我需要从C#中的列表中删除一个元素。从前面提供的答案来看,要实现这一点,似乎必须向后循环整个集合。但是,我有一个IEnumerator来迭代列表中的元素。 代码如下:

        IEnumerator<Solution> iterator = solutionsList_.GetEnumerator();
        while (iterator.MoveNext())
        {

            Solution element = iterator.Current;
            int flag = dominance_.Compare(solution, element);
            if (flag == -1) { // The Individual to insert dominates other
                // individuals in the archive
                iterator.Remove();} // Delete it from the archive
IEnumerator迭代器=solutionsList_u.GetEnumerator();
while(iterator.MoveNext())
{
解决方案元素=迭代器.Current;
int flag=优势度比较(解决方案、元素);
如果(flag==-1){//要插入的个体支配其他个体
//档案中的个人
iterator.Remove();}//将其从存档中删除

如果我可以通过使用枚举器从列表中删除元素,这将非常有帮助。

IEnumerable只能被枚举,不能从中添加/删除项

您可以使用ICollection来添加/删除项,您可以尝试在列表实现ICollection时将IEnumerable强制转换为ICollection


IEnumerable只能枚举,不能添加/删除其中的项

您可以使用ICollection来添加/删除项,您可以尝试在列表实现ICollection时将IEnumerable强制转换为ICollection


既然您有一个
列表,那么就没有理由显式获取枚举数。您可以使用一个常规循环,然后往回走,这样您就可以毫无问题地删除元素,下面是一个代码示例:

var solutionsList_ = new List<int>();
for (var i = solutionsList_.Count - 1; i >= 0; i--)
{
    var element = solutionsList_[i];
    //if (Some logic)
    {
        solutionsList_.RemoveAt(i);
    }
}
var solutionsList\=new List();
对于(var i=解决方案列表计数-1;i>=0;i--)
{
var元素=解决方案列表[i];
//如果(某些逻辑)
{
解决方案列表移除(i);
}
}

既然您有一个
列表,那么就没有理由显式地获取枚举数。您可以使用常规循环,然后往回走,这样您就可以毫无问题地删除元素,下面是一个代码示例:

var solutionsList_ = new List<int>();
for (var i = solutionsList_.Count - 1; i >= 0; i--)
{
    var element = solutionsList_[i];
    //if (Some logic)
    {
        solutionsList_.RemoveAt(i);
    }
}
var solutionsList\=new List();
对于(var i=解决方案列表计数-1;i>=0;i--)
{
var元素=解决方案列表[i];
//如果(某些逻辑)
{
解决方案列表移除(i);
}
}

我认为您正在使场景复杂化。您可以直接应用于
列表
。因此,您只需使用以下代码即可从列表中删除项目:

List<Solution> solutionsList_ = new List<Solution>() { };
// Populate the list here
var itemsToRemove = solutionsList_.Where(x => dominance_.Compare(solution, x) == -1);
foreach (var item in itemsToRemove)
{
    solutionsList_.Remove(item);
}
List solutionsList\=newlist(){};
//在此处填充列表
var itemsToRemove=solutionsList,其中(x=>dominance,比较(solution,x)=-1);
foreach(itemsToRemove中的变量项)
{
解决方案列表\删除(项目);
}

我认为您正在使场景复杂化。您可以直接应用于
列表
。因此,您只需使用以下代码即可从列表中删除项目:

List<Solution> solutionsList_ = new List<Solution>() { };
// Populate the list here
var itemsToRemove = solutionsList_.Where(x => dominance_.Compare(solution, x) == -1);
foreach (var item in itemsToRemove)
{
    solutionsList_.Remove(item);
}
List solutionsList\=newlist(){};
//在此处填充列表
var itemsToRemove=solutionsList,其中(x=>dominance,比较(solution,x)=-1);
foreach(itemsToRemove中的变量项)
{
解决方案列表\删除(项目);
}

什么是
解决方案列表
解决方案列表
是解决方案列表
是解决方案列表
解决方案列表
是解决方案列表是解决方案列表是列表类型