public static List<SizePair> MatchSize(object sizeStd, string size, SizeUsePlace place) { var stdAtt = GetSizeStandartAttributeFromStd(sizeStd); var stds = new List<Type>(); stds.Add(sizeStd.GetType()); if(place == SizeUsePlace.Сlothes && stdAtt.Sex != ClothesSex.Universal) { var type = GetСlothesTypeFromStd(sizeStd); var unisex = GetStandartsForСlothes(type).FirstOrDefault(x => x.Sex == ClothesSex.Universal); if (unisex != null) stds.Add(unisex.StandartsEnumType); } var result = new List<SizePair> (); foreach(var sizeType in stds) { var lookupArray = GetSizeLookup (sizeType); if (lookupArray == null) continue; int original = (int)sizeStd; foreach(var lookup in lookupArray) { if (lookup.Use == SizeUse.СlothesOnly && place == SizeUsePlace.Human) continue; if (lookup.Use == SizeUse.HumanOnly && place == SizeUsePlace.Сlothes) continue; if(lookup.Appropriated.Any(x => x[original] == size)) { foreach (var std in Enum.GetValues(sizeType)) { var newPiar = new SizePair (GetSizeStdCode (std), lookup.Names[(int)std]); if (newPiar.Size == null) continue; if (!result.Any (pair => pair.StandardCode == newPiar.StandardCode && pair.Size == newPiar.Size)) result.Add (newPiar); } } } } return result; }
public static List<SizePair> MatchSize(SizePair sizePair, SizeUsePlace place) { return MatchSize (sizePair.StandardCode, sizePair.Size, place); }