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

时间:2015-05-12 13:49:40

标签: c# asp.net-mvc-5

我回来困扰你的梦想!我正在研究复杂循环中的一些值。列表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);
}

1 个答案:

答案 0 :(得分:4)

Try List.Union正是出于这种情况。