在列表中查找非重复项目并将其保存在其他列表中的最佳和有效方法

时间:2013-04-19 14:36:38

标签: performance list duplicates

Class encargo
Property idEncargo as int
Property listEncargoCollege As IList(Of encargoCollege)

Class encargoCollege
Property idEncargo as int
Property rate as Decimal
Property college as College

Class college
Property idCollege as int
Property name as String
Property serial as int

所以我有 1000 Encargos 的列表(Encargo)。 每个Encargo都有至少50个EncargoCollege。

每个大学都是他的idCollege独有的。

在Encargo上所有encargoColleges必须是不同的(不同的idCollege)

我需要的是(Encargo)迭代列表以及列表中找到的每个不同的idCollege;显示税和总和的总和。 例如:

Encargo(idEncargo = 1)

EncargoCollege(idCollege = 55,rate = 100); EncargoCollege(idCollege = 56,rate = 200)

Encargo 2(idEncargo = 2)

EncargoCollege(idCollege = 56,rate = 500); EncargoCollege(idCollege = 57,rate = 800); EncargoCollege(idCollege = 58,rate = 1200)

我必须表明:

EncargoCollege 1(idCollege是55; college.name是Paul;率是100)

EncargoCollege 2(idCollege是56; college.name是Peter;率是700)

EncargoCollege 3(idCollege是57; college.name是迈克;率是800)

EncargoCollege 4(idCollege是58; college.name是杰克;率是1200)

实现这一目标的速度和效率方面的最佳方法是什么?

提前致谢。

1 个答案:

答案 0 :(得分:0)

由于您没有在数据集合中查找特定值或信息的子集,也没有办法将迭代短路,我尝试使用嵌套的“for”循环完成该任务,当您说:

  

我需要的是(Encargo)迭代列表以及列表中找到的每个不同的idCollege;显示税和总和的总和。

使用伪代码:

  foreach (var e in Encargo)
  {
    decimal taxSum = 0, rateSum = 0;
    foreach (var eC in e.listEncargoCollege)
    {
      rateSum += eC.rate;
      taxSum += eC.Tax; //though I didn't see where the tax field was declared/defined.
    }
    Console.WriteLine(string.Format("EncargoCollege {0}: rate Sum = {1} , tax Sum = {2} ", e.idEncargo, rateSum, taxSum));
  }

对于第二部分不要sumarize,只需在第二个foreach语句中打印值。

我不知道重复的地方可能存在,特别是在encargoCollege(id使它们成为唯一的,不是吗?),如果那不可能,这可能会有所帮助!