private void ExecuteImportDataFromFile() { var openFileDialog = new OpenFileDialog() { Filter = string.Format("UAD-файлы (*.{0})|*.{0}", XmlUserActivityDataContext.UadFileExtension), Multiselect = true, }; bool?result = openFileDialog.ShowDialog(); if (result == true) { var serializer = new XmlSerializer(typeof(SessionGroup)); foreach (var stream in openFileDialog.OpenFiles()) { using (stream) { SessionGroup sessionGroup = XmlUserActivityDataContext.LoadSessionGroup(stream); SessionGroups.Add(sessionGroup); } } var newRegions = new List <RegionImageItemVM>(); foreach (var region in SessionGroups.SelectMany(sg => sg.Sessions).SelectMany(s => s.Regions)) { foreach (var image in region.Variations) { if (newRegions.FirstOrDefault(r => r.RegionName == region.Name && r.ImageName == image.Name) == null) { var newRegion = new RegionImageItemVM() { RegionName = region.Name, Image = image }; newRegions.Add(newRegion); } } } RegionSelector.Clear(); RegionSelector.AddRange(newRegions.OrderBy(r => r.RegionName)); RegionSelector.SelectedItem = RegionSelector.FirstOrDefault(); } }
/// <summary> /// Import UAD-file(s), load available regions. /// </summary> private void ExecuteImportFile() { var groups = _import.ImportFile(); Files.AddRange(groups); var newRegions = new List <RegionImageItemVM>(); foreach (var region in Files.SelectMany(sg => sg.Sessions).SelectMany(s => s.Regions)) { foreach (var image in region.Variations) { if (newRegions.FirstOrDefault(r => r.RegionName == region.Name && r.ImageName == image.Name) == null) { var newRegion = new RegionImageItemVM() { RegionName = region.Name, Image = image }; newRegions.Add(newRegion); } } } //var regions = Files.SelectMany(sg => sg.Sessions) // .SelectMany(s => s.RegionCollection) // .SelectMany(r => r.Images.Select(v => new { r, v })) // .DistinctBy((r1, r2) => r1.r.Name == r2.r.Name && r1.v.Name == r2.v.Name); RegionSelector.Clear(); RegionSelector.AddRange(newRegions.OrderBy(r => r.RegionName)); RegionSelector.SelectFirst(); int fileCount = Files.Count; int sessionCount = Files.Sum(sg => sg.Sessions.Count); int eventCount = Files.Sum(sg => sg.Sessions.Sum(a => a.Events.Count)); LoadedDataInfo = string.Format(DataStatusStringFormat, fileCount, sessionCount, eventCount); }