private void ParseItemsSection(XElement itemsSection) { LocalizationDataItems = itemsSection .ItemSections() .Select( itemSection => { var KEY = itemSection.Attribute("KEY").Value() ?? itemSection.Elements("KEY").Single().Value; var VALUES = itemSection .Elements() .Where( element => element.Name != "KEY" ) .Select( element => new { ElementName = element.Name.ToString(), // ReSharper disable RedundantAnonymousTypePropertyName Value = element.Value // ReSharper restore RedundantAnonymousTypePropertyName } ) .Select( elementData => new { Language = ElementNameToLanguageMap .ValueOrDefault( elementData.ElementName ), // ReSharper disable RedundantAnonymousTypePropertyName Value = elementData.Value // ReSharper restore RedundantAnonymousTypePropertyName } ) .Where( languageData => languageData.Language != null ) .ToDictionary( languageData => languageData.Language, languageData => languageData.Value ); if (DefaultLanguage.IsNotEmpty()) { if(VALUES.ContainsKey(DefaultLanguage) == false) { VALUES.Add(DefaultLanguage, KEY); } } return new LocalizationDataItem { Key = KEY, Values = VALUES }; } ) .ToList(); }