【发布时间】:2014-06-29 21:29:49
【问题描述】:
我试图通过避免多个 foreach 循环来压缩我的代码来完成这项任务。我有一个由表 A 填充的列表框。我需要将这些值与表 B 进行比较以填充另一个列表。
表 A 与表 B 有一对多的关系,虽然我的解决方案暂时有效,但它使用了相当多的内存,所以我需要压缩它。
List<int> listProj = new List<int>();
var _tableB = from t in TableB
where t.StatID == 1 || t.StatID == 2
select p.ID;
var _tableA = from ListItem n in lstTableA.Items
where _tableB.Contains(int.Parse(n.Value)) && n.Selected == true
select n;
foreach (ListItem i in _tableA)
{
int affID = Convert.ToInt32(i.Value);
if (TableB.Where(t => t.ID == affID && t.StatID == 1 || t.StatID == 2).Any()
{
foreach(var item in TableB.Where(t => t.ID == affID && t.StatID == 1 || t.StatID == 2)
{
int pID = Convert.ToInt32(item.pID);
listProject.Add(projID);
}
}
}
主要问题是这两个循环循环了相当多的记录,这导致了内存泄漏。我觉得有一种方法可以一次抓取多条记录并将它们添加到列表中,因此表 A 和表 B 之间是一对多的关系。
【问题讨论】:
标签: c# asp.net linq listbox listboxitem