我想比较C#中的两个集合,我目前正在使用嵌套的"for"循环.在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;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想将AcademicYearCollection中的"Code"与OrgCollection中的"AcademicYearCode"属性进行比较,如果它是相同的,则将其添加到Dropdownlist"ddlYear"中.
提前致谢.
And*_*bel 14
您可以在LINQ中执行此操作,从而提供更短的代码.要知道它是否更有效,您必须对其进行分析.我认为linq的join运算符使用某种类型的散列桶,这应该可以提供更好的性能,尤其是在集合很大的情况下.您当前的解决方案是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 }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7560 次 |
| 最近记录: |