private void AggregateData() { foreach (IItem item in PawnItems) { bool isGold = false; if (item is ScrapItem) { ScrapItem scrap = item as ScrapItem; if (_listGoldTypes.Contains(scrap.TypeOfMetal)) { isGold = true; } // Have we added this type of ScrapItem to _aggData yet? var results = from a in _aggData where a.IsGold == isGold && a.TypeOfMetal == scrap.TypeOfMetal && a.ApproximateKarats == (scrap.ApproximateKarats + "K") select a; AggScrapItemInfo info; if (results.Any()) { // Increment existing _aggData Cost and Weight values. info = results.First(); info.Cost += scrap.ItemAmount; info.Weight += Convert.ToDecimal(scrap.ApproximateWeight); } else { // Add ScrapItem to _aggData since not added yet. info = new AggScrapItemInfo(); info.IsGold = isGold; info.TypeOfMetal = scrap.TypeOfMetal; info.ApproximateKarats = scrap.ApproximateKarats + "K"; info.Weight = Convert.ToDecimal(scrap.ApproximateWeight); info.Cost = scrap.ItemAmount; _aggData.Add(info); } } //end if (item is ScrapItem) } //end foreach (PawnItems) }
private void AggregateData() { if (_trnsfrItems == null) { return; } bool isGold; foreach (IItem item in _trnsfrItems) { isGold = false; if (item is ScrapItem) { AggScrapItemInfo info; if (_listGoldTypes.Contains(((ScrapItem)item).TypeOfMetal)) { isGold = true; } var results = from a in _aggData where a.IsGold == isGold && a.TypeOfMetal == ((ScrapItem)item).TypeOfMetal && a.ApproximateKarats == (((ScrapItem)item).ApproximateKarats + "K") select a; if (results.Count() > 0) { info = results.First <AggScrapItemInfo>(); info.Cost += item.ItemAmount; try { info.Weight += Convert.ToDecimal(((ScrapItem)item).ApproximateWeight); } catch (Exception) { info.Weight = 0; } } else { info = new AggScrapItemInfo(); info.IsGold = isGold; info.TypeOfMetal = ((ScrapItem)item).TypeOfMetal; info.ApproximateKarats = ((ScrapItem)item).ApproximateKarats + "K"; try// handle for formatting error { info.Weight = ((ScrapItem)item).ApproximateWeight == null ? 0 : Convert.ToDecimal(((ScrapItem)item).ApproximateWeight); } catch (Exception) { info.Weight = 0; } info.Cost = item.ItemAmount; _aggData.Add(info); } } } }