C# 将一个值与几个可能的列表匹配项进行比较

C# 将一个值与几个可能的列表匹配项进行比较,c#,asp.net-mvc-5,C#,Asp.net Mvc 5,我又回到你的梦中去了!我正在比较复杂循环中的一些值。列表1是问题/答案列表,列表2也是问题/答案列表。我想将列表1与列表2进行比较,并在将其与列表2合并之前从列表1中删除重复项。我的问题是,在当前的种子数据中,列表1中的两项与列表2中的两项匹配,但只有一项被删除,而不是两项都被删除 我已经做了几天了,我的脑袋快要爆炸了,所以我希望我能找到一些帮助 以下是您的代码: //Fetching questions/answers which do not have an attempt //Get qu

我又回到你的梦中去了!我正在比较复杂循环中的一些值。列表1是问题/答案列表,列表2也是问题/答案列表。我想将列表1与列表2进行比较,并在将其与列表2合并之前从列表1中删除重复项。我的问题是,在当前的种子数据中,列表1中的两项与列表2中的两项匹配,但只有一项被删除,而不是两项都被删除

我已经做了几天了,我的脑袋快要爆炸了,所以我希望我能找到一些帮助

以下是您的代码:

//Fetching questions/answers which do not have an attempt
//Get questions, which automatically pull associated answers thanks to the model
List<QuizQuestions> notTriedQuestions = await db.QuizQuestions.Where(x=>x.QuizID == report.QuizHeader.QuizID).ToListAsync();

//Compare to existing attempt data and remove duplicate questions
int i = 0;    
while(i < notTriedQuestions.Count)
    {

    var originalAnswersCount = notTriedQuestions.ElementAt(i).QuizAnswers.Count;

        int j = 0;

        while(j < originalAnswersCount)
        {
            var comparedID = notTriedQuestions.ElementAt(i).QuizAnswers.ElementAt(j).AnswerID;

            if (report.QuizHeader.QuizQuestions.Any(item => item.QuizAnswers.Any(x => x.AnswerID == comparedID)))
            {
                notTriedQuestions.RemoveAt(i);

                //Trip while value and cause break out of loop, otherwise you result in a catch
                j = originalAnswersCount;
            }
            else
            {
                j++;
            }


        }

        i++;
    }

//Add filtered list to master list
foreach (var item in notTriedQuestions)
{
    report.QuizQuestions.Add(item);
}

正是为了这类事情。

正是为了这类事情。

就是这样。非常感谢。很乐意帮忙。我强烈推荐同样可用的Set操作。那里有一些非常方便的东西。就这样。非常感谢。很乐意帮忙。我强烈推荐同样可用的Set操作。那里有一些非常方便的东西。