C# 删除列表数据foreach

C# 删除列表数据foreach,c#,foreach,C#,Foreach,嗨,我有这样的代码 List<CQuizOccurrence> matchData = new List<CQuizOccurrence>(); foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) { DateTime dtDatabase = (DateTime)myQuizOccurrence.occurred; string dt = dtDatabase.ToS

嗨,我有这样的代码

List<CQuizOccurrence> matchData = new List<CQuizOccurrence>();
foreach (CQuizOccurrence myQuizOccurrence in Global.quizOccurrences) 
{
    DateTime dtDatabase = (DateTime)myQuizOccurrence.occurred;
    string dt = dtDatabase.ToString();
    if (dt == dateOccur) {
        matchData.Add(myQuizOccurrence);
    }
}

foreach (CQuizOccurrence myQuizOccurrence in matchData)
{
    Global.quizOccurrences.RemoveAt(0);
}
List matchData=new List();
foreach(CQuizOccurrence myQuizOccurrence in Global.quizOccurrences)
{
DateTime dtDatabase=(DateTime)myQuizOccurrence.Occurrence;
字符串dt=dtDatabase.ToString();
如果(dt==日期发生){
matchData.Add(myQuizOccurrence);
}
}
foreach(匹配数据中的CQuizOccurrence myQuizOccurrence)
{
全局性。quizOccurrences。RemoveAt(0);
}
我认为代码将能够删除'Global.quizOccurences'数据,其中'dt==dateoccurrence',但我错了,它只是简单地删除了索引为0的'Global.quizoccures'


如何按我的意愿更正(斜体和粗体文本)

尝试更改此行:

Global.quizOccurrences.RemoveAt(0);
为此:

Global.quizOccurrences.Remove(myQuizOccurrence);

尝试更改此行:

Global.quizOccurrences.RemoveAt(0);
为此:

Global.quizOccurrences.Remove(myQuizOccurrence);
RemoveAt()
删除指定索引处的项。在您的情况下,您需要删除与特定条件匹配的项,而不是列表开头的项

var itemsToRemove = Global.quizOccurrences
    .Where(q => q.occurred.ToString() == dateOccur)
    .ToList();

foreach(var quizOccurrence in itemsToRemove)
{
    Global.quizOccurrences.Remove(quizOccurrence);
}
RemoveAt()
删除指定索引处的项。在您的情况下,您需要删除与特定条件匹配的项,而不是列表开头的项

var itemsToRemove = Global.quizOccurrences
    .Where(q => q.occurred.ToString() == dateOccur)
    .ToList();

foreach(var quizOccurrence in itemsToRemove)
{
    Global.quizOccurrences.Remove(quizOccurrence);
}

也许您只想
Global.quizOccurences.RemoveWhere(qo=>((DateTime)qo.occurrent.ToString()==dateoccurrent)
@Blablablaster我不能使用.removeWhere属性…在framework 4.0中可用吗?我想应该是
RemoveAll(谓词匹配)
也许你只想
Global.quizOccurences.removeWhere(qo=>((DateTime)qo.occurrent).ToString()==Dateoccurrence)
@Blablablaster我不能使用。removeWhere属性…在framework 4.0中可用吗?我认为应该是
RemoveAll(谓词匹配)