public FormFieldViewModel(FormField field, string[] languageCodes) : this() { var names = field.GetNames(true); var values = field.GetValues(false); IEnumerable <Option> options = typeof(OptionsField).IsAssignableFrom(field.GetType()) ? ((OptionsField)field).Options : new List <Option>(); foreach (var name in names) { if (languageCodes.Contains(name.LanguageCode)) { Names.Add(name.LanguageCode, name.Value); } } foreach (var value in values) { if (languageCodes.Contains(value.LanguageCode)) { if (Values.ContainsKey(value.LanguageCode)) { Values = new Dictionary <string, string>(); ValuesList.Add(Values); Values.Add(value.LanguageCode, value.Value); } else { Values.Add(value.LanguageCode, value.Value); } } } foreach (string code in languageCodes) { SelectedOptions.Add(code, new List <string>()); } foreach (var option in options) { if (option.Selected) { foreach (var optionVal in option.Value) { if (languageCodes.Contains(optionVal.LanguageCode)) { SelectedOptions[optionVal.LanguageCode].Add(optionVal.Value); } } } } }