C# 列出一个与列表B中所有可能值进行比较的值
请原谅我一天问两次名单,伙计们。我正在比较两个列表,需要一个备份-它们是否匹配?我将列表B全部与列表a中的单个值进行比较。我尝试了一些组合,但没有成功 以下是解决您的问题的小代码: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++) {
@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他“匹配”或那些相交的是正确的吗?甚至不是这样,只要有匹配就可以得到正确或错误的答案。