// Функция фильтрации списка компонентов для заявки на склад public List <ComponentInitialProperties> GetFilteredComponents(List <ComponentInitialProperties> nonFilteredComponents) { try { var filteredComponents = new List <ComponentInitialProperties>(); // Получил отфильтрованные компоненты, но не посчитал их количество var nonFilteredPartNumbers = new List <string>(); foreach (ComponentInitialProperties componentInitialProperty in nonFilteredComponents) { nonFilteredPartNumbers.Add(componentInitialProperty.PartNumber); } var partNumbersArray = nonFilteredPartNumbers.Distinct().ToArray(); // Считаю количество компонентов и формирую список for (int counter = 0; counter < partNumbersArray.Length; counter++) { var componentCount = 0; // Количество компонентов var componentInitialProperty = new ComponentInitialProperties(); //Прохожу по всему списку неотфильтрованному и считаю количество компонентов for (int component = 0; component < nonFilteredComponents.Count; component++) { // Если совпали названия, смотрим количество и добавляем if (partNumbersArray[counter] == nonFilteredComponents[component].PartNumber) { componentCount += nonFilteredComponents[component].Count; } } componentInitialProperty.PartNumber = partNumbersArray[counter]; componentInitialProperty.Count = componentCount; filteredComponents.Add(componentInitialProperty); } return(filteredComponents); } catch { var getFilteredComponentsErr = new Exception("Ошибка в функции GetFilteredComponents"); throw getFilteredComponentsErr; } }
// Функция получения списка компонентов для заявки на склад public List <ComponentInitialProperties> GetNonFilteredComponents(string projID) { try { // Так как ID записан строкой в списке, то конвертируем var curProjectID = Convert.ToInt32(projID); var nonFilteredComponents = new List <ComponentInitialProperties>(); using (DataBaseContext dataBaseConnection = new DataBaseContext()) { // Получил изделия по проекту var pArticles = dataBaseConnection.PArticles.Where( o => o.ProjectID == curProjectID).ToList(); // Перебираю проекты и заполняю компоненты foreach (PArticle pArticle in pArticles) { // Получил список всех компонентов в изделии var components = dataBaseConnection.Components.Where( o => o.PArticleID == pArticle.PArticleID).ToList(); // Записываю базовую информацию по компонентам foreach (Component component in components) { var componentInitialProperty = new ComponentInitialProperties(); componentInitialProperty.PartNumber = component.PartNumber; componentInitialProperty.Count = component.Count; nonFilteredComponents.Add(componentInitialProperty); } } } return(nonFilteredComponents); } catch { var getNonFilteredComponentsErr = new Exception("Ошибка в функции GetNonFilteredComponents"); throw getNonFilteredComponentsErr; } }