/// <summary> /// Returns the product of the this efficacy set with another one. /// </summary> public EfficacySet Product(EfficacySet other) { var product = new EfficacySet(); var allTypeIds = GetIds().Union(other.GetIds()); foreach (var typeId in allTypeIds) { var first = GetEfficacy(typeId); var second = other.GetEfficacy(typeId); if (first.HasValue && second.HasValue) { product.Add(typeId, first.Value * second.Value); } else if (first.HasValue) { product.Add(typeId, first.Value); } else if (second.HasValue) { product.Add(typeId, second.Value); } } return(product); }
/// <summary> /// Sets the given efficacy in the version group with the given ID. /// </summary> public void SetEfficacySet(int versionGroupId, EfficacySet efficacy) { EfficacySets.RemoveAll(m => m.Id == versionGroupId); var mapping = new WithId <EfficacySet>(versionGroupId, efficacy); EfficacySets.Add(mapping); }