private void ImportService_AddColumnHeadersCompleted(object sender, AddColumnHeadersCompletedEventArgs e) { var sheetInfo = (SheetInfo)e.UserState; sheetInfo.ColumnHeaders = new List <ColumnHeader>(e.Result); // производим сопоставление собранных столбцов с Клиентами для определения вероятности принадлежности var temporaryClients = new List <RelatedClientInfo>(); foreach (var ch in sheetInfo.ColumnHeaders) { if (ch.ColumnHeaderClients == null) { continue; } foreach (var chcRelation in ch.ColumnHeaderClients) { foreach (var client in Clients) { if (client.Id != chcRelation.ClientId) { continue; } var addedClient = sheetInfo.RelatedClientsContainClient(chcRelation.Client, temporaryClients); if (addedClient != null) { addedClient.RelatedColumnHeaderCount++; } else { temporaryClients.Add(new RelatedClientInfo { Client = chcRelation.Client, RelatedColumnHeaderCount = 1, ColumnHeaderCount = sheetInfo.ColumnHeaders.Count }); } } } } sheetInfo.RelatedClients = new ObservableCollection <RelatedClientInfo>(); temporaryClients.Sort((one, two) => { if (one.RelatedPercent > two.RelatedPercent) { return(-1); } return(1); }); temporaryClients.Where(c => c.RelatedPercent > 0).ForEach(c => sheetInfo.RelatedClients.Add(c)); temporaryClients.Clear(); if (sheetInfo.RelatedClients.Count > 0) { sheetInfo.SelectedRelatedClient = sheetInfo.RelatedClients[0]; } }
private void ImportService_AddColumnHeadersCompleted(object sender, AddColumnHeadersCompletedEventArgs e) { var sheetInfo = (SheetInfo) e.UserState; sheetInfo.ColumnHeaders = new List<ColumnHeader>(e.Result); // производим сопоставление собранных столбцов с Клиентами для определения вероятности принадлежности var temporaryClients = new List<RelatedClientInfo>(); foreach (var ch in sheetInfo.ColumnHeaders) { if (ch.ColumnHeaderClients == null) continue; foreach (var chcRelation in ch.ColumnHeaderClients) { foreach (var client in Clients) { if (client.Id != chcRelation.ClientId) continue; var addedClient = sheetInfo.RelatedClientsContainClient(chcRelation.Client, temporaryClients); if (addedClient != null) addedClient.RelatedColumnHeaderCount++; else { temporaryClients.Add(new RelatedClientInfo { Client = chcRelation.Client, RelatedColumnHeaderCount = 1, ColumnHeaderCount = sheetInfo.ColumnHeaders.Count }); } } } } sheetInfo.RelatedClients = new ObservableCollection<RelatedClientInfo>(); temporaryClients.Sort((one, two) => { if (one.RelatedPercent > two.RelatedPercent) return -1; return 1; }); temporaryClients.Where(c => c.RelatedPercent > 0).ForEach(c => sheetInfo.RelatedClients.Add(c)); temporaryClients.Clear(); if (sheetInfo.RelatedClients.Count > 0) sheetInfo.SelectedRelatedClient = sheetInfo.RelatedClients[0]; }