Exemplo n.º 1
0
        private static List <TopSisReturnModel> FinalResult(List <TopSisModel> sisModels, Matix dplus, Matix dmin)
        {
            Matix matrixNodes = new Matix(dplus.Xcount, 1);

            foreach (MatrixNode matrixNode in matrixNodes)
            {
                double f     = ((dplus[matrixNode.X, 1].Value ?? 0) + (dmin[matrixNode.X, 1].Value ?? 0));
                double value = (dmin[matrixNode.X, 1].Value ?? 0) / f;
                matrixNode.Value = (double)Math.Round(value, 3);
            }
            List <TopSisReturnModel> outdictionary = new List <TopSisReturnModel>();
            int grad = 1;

            foreach (MatrixNode matrixNode in matrixNodes.Where(x => x.Value > 0).OrderByDescending(x => x.Value).ToList())
            {
                outdictionary.Add(new TopSisReturnModel()
                {
                    RefId = sisModels[matrixNode.X - 1].RefId, Rank = grad, Score = Math.Round(matrixNode.Value ?? 0, 3),
                });
                grad++;
            }
            foreach (MatrixNode matrixNode in matrixNodes.Where(x => x.Value == null || x.Value <= 0).ToList())
            {
                outdictionary.Add(new TopSisReturnModel()
                {
                    RefId = sisModels[matrixNode.X - 1].RefId, Rank = outdictionary.Max(x => x.Rank) + 1, Score = matrixNode.Value,
                });
            }
            return(outdictionary);
        }