我想比较我当前正在使用嵌套“for”循环执行的 C# 中的两个集合。 Linq 中是否有一种方法可以更快、更高效地执行相同操作?这是我当前的代码,它可以完美地工作,只是在寻找一种有效的方法:
OrgCollection myYears = Org.RetrieveDistinctYear();
if (myYears.Count > 0)
{
AcademicYearCollection allYears = AcademicYear.RetrieveAll();
for (int i = 0; i < myYears.Count; i++)
{
for (int j = 0; j < allYears.Count; j++)
{
if (myYears[i].AcademicYearCode == allYears[j].Code)
{
ddlYear.Items.Insert(0, new ListItem(allYears[j].Name,allYears[j].Code));
break;
}
}
}
}
我想将学年集合中的“代码”与 OrgCollection 中的“学年代码”属性进行比较,如果相同,则将其添加到下拉列表“ddlYear”中。
提前致谢。
您可以在 LINQ 中完成此操作,它提供的代码更短。要知道它是否更有效,您必须对其进行分析。我认为 linq 的连接运算符在内部使用某种哈希桶,这应该会提供更好的性能,特别是在集合很大的情况下。您当前的解决方案是 O(N^2),如果选项数量增加,该解决方案将很快退化。
OrgCollection myYears = Org.RetrieveDistinctYear();
AcademicYearCollection allYears = AcademicYear.RetrieveAll();
var items = from y in myYears
join ay in allYears
on y.Code equals ay.AcademicYearCode
select new { ay.Name, ay.Code }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)