C# 列出一个与列表B中所有可能值进行比较的值

C# 列出一个与列表B中所有可能值进行比较的值,c#,linq,C#,Linq,请原谅我一天问两次名单,伙计们。我正在比较两个列表,需要一个备份-它们是否匹配?我将列表B全部与列表a中的单个值进行比较。我尝试了一些组合,但没有成功 以下是解决您的问题的小代码: @for (int i = 0; i < @Model.QuizQuestions.Count(); i++) { for (int j = 0; j < Model.QuizQuestions.ElementAt(i).QuizAnswers.Count(); j++) {

请原谅我一天问两次名单,伙计们。我正在比较两个列表,需要一个备份-它们是否匹配?我将列表B全部与列表a中的单个值进行比较。我尝试了一些组合,但没有成功

以下是解决您的问题的小代码:

 @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
            }


        }
@for(int i=0;i<@Model.QuizQuestions.Count();i++)
{
对于(int j=0;jitem.QuizAnswers.Any(x=>x.AnswerID==Model.QuizQuestions.ElementAt(i).QuizAnswers.ElementAt(j.AnswerID)))
{
//在这里做点什么
}
其他的
{
//做点别的
}
}
我错过了什么明显的东西?谢谢

视图模型:

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; }
}
公共类QuizindCoreReportObject
{
[未映射]
公共虚拟主题列表主题{get;set;}
[未映射]
公共虚拟QuizHeader QuizHeader{get;set;}
[未映射]
公共虚拟列表问题{get;set;}
[未映射]
公共虚拟列表QuizAnswer{get;set;}
}

注意:QuizAnswers是QuizQuestions的一个属性。QuizQuestions是QuizHeader的一个属性。我在这个配置下传递了两个两个列表,因此我为其中的不清晰表示歉意。

我知道这是一个有点简单化的观点,但是您是否尝试过Linq库中内置的intersect和except函数

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)");
结果如下:

  • Intersect=(IEnumerable)3
  • Seq1=(IEnumerable){1,2}
  • Seq2=(IEnumerable){4,5}

你能对你的提问做些类似的事情吗?你在每个类中寻找的Id是唯一的还是列表A中的Id 1与列表B中的Id 2匹配?我不清楚提问类的结构,所以我不知道如何进一步帮助你。

谢谢大家的帮助。我能够修改我的代码来做什么我需要做一些修补。这是通过中间变量完成的工作

                var value = Model.QuizQuestions.ElementAt(i).QuizAnswers.ElementAt(j).AnswerID;
            if ( Model.QuizHeader.QuizQuestions.Any(item => item.QuizAnswers.Any( x=> x.AnswerID == value)))

你能提供你的模型吗?完成。这是一个视图模型。所以你想知道列表a中的某个值x是否存在于列表B中?或者你想知道a中的所有值是否存在于B中,而B中的所有值是否存在于a中?@Thaoden我想知道列表a中的值x是否存在于B中的某个位置。那么为什么不使用
a.Contains(B)
?我有一种感觉,我错过了一些东西……这是我想要走的路,但据我所知,Intersect似乎没有返回布尔值。因此,如果(List1.Intersect(List2))我就不能返回布尔值在这种情况下。此外,它们是唯一的ID,除了匹配项。您总是需要对每个集合或仅匹配项执行某些操作吗?如果存在匹配项,我将通过标记复选框使用列表A中的数据。如果不存在匹配项,html应在不使用checbox的情况下呈现。因此,在比较后,我不需要列表B,因此要清楚,您只呈现了t他“匹配”或那些相交的是正确的吗?甚至不是这样,只要有匹配就可以得到正确或错误的答案。