这里有一些代码可以解决您的问题:
@for (int i = 0; i < @Model.QuizQuestions.Count(); i++)
{
for (int j = 0; j < Model.QuizQuestions.ElementAt(i).QuizAnswers.Count(); j++)
{
if (Model.QuizHeader.QuizQuestions.Any(item => item.QuizAnswers.Any(x =>x.AnswerID == Model.QuizQuestions.ElementAt(i).QuizAnswers.ElementAt(j).AnswerID)))
{
//Do something here
}
else
{
//Do something else
}
}
我错过了什么明显的事情?谢谢!
视图模型:
public class QuizIndScoreReportObject
{
[NotMapped]
public virtual TopicList Topic { get; set; }
[NotMapped]
public virtual QuizHeader QuizHeader { get; set; }
[NotMapped]
public virtual List<QuizQuestions> QuizQuestions { get; set; }
[NotMapped]
public virtual List<QuizAnswers> QuizAnswer { get; set; }
}
注意QuizAnswers是QuizQuestions的一个属性。 QuizQuestions是QuizHeader的属性。我在这个配置下传递了两个列表,所以我为那里缺乏清晰度而道歉。
答案 0 :(得分:2)
感谢大家的帮助。我能够修改我的代码,以便通过一些修补来完成我需要的工作。这是通过中间变量开始工作的原因。
var value = Model.QuizQuestions.ElementAt(i).QuizAnswers.ElementAt(j).AnswerID;
if ( Model.QuizHeader.QuizQuestions.Any(item => item.QuizAnswers.Any( x=> x.AnswerID == value)))
答案 1 :(得分:1)
我知道这是对事物的一种简单看法,但你是否尝试了相交和Linq库中内置的函数?
int[] seq1 = { 1, 2, 3 }, seq2 = { 3, 4, 5 };
seq1.Intersect (seq2).Dump ("Intersect");
seq1.Except (seq2).Dump ("seq1.Except (seq2)");
seq2.Except (seq1).Dump ("seq2.Except (seq1)");
结果如下:
您可以使用QuizQuestions执行此类操作吗?您在每个类中寻找的ID是唯一的,或者列表A中的Id 1是否与列表B中的Id 2相匹配?我不清楚QuizQuestion类的结构,所以我不确定如何进一步帮助你。