Beispiel #1
0
        private List <List <string> > ComputeAStar(DataTable sourceData)
        {
            DataTable temp = sourceData.Copy();
            IEqualityComparer <DataRow> comparer = new RowChecker();
            var colCount = sourceData.Columns.Count - 1;
            List <List <string> > tempAStar = new List <List <string> >();

            //Retrieve AStar
            foreach (var row in sourceData.AsEnumerable().Distinct(comparer))
            {
                var same = temp.AsEnumerable().Where(t => comparer.Equals(t, row)).Select(t => t.Field <string>("ID")).ToList();
                if (same.Count > 0)
                {
                    tempAStar.Add(same);
                }
            }
            return(tempAStar);
        }
Beispiel #2
0
        private bool CheckAStarLessThanDStar(DataTable data)
        {
            IEqualityComparer <DataRow> comparer = new RowChecker();
            var  colCount  = data.Columns.Count - 1;
            bool intlCndtn = true;

            //Retrieve AStar
            var tempAstar = ComputeAStar(data);

            //Check A*<=d*
            foreach (var sets in tempAstar)
            {
                var diff = data.AsEnumerable().Where(row => sets.Exists(val => val == row.Field <string>(colCount))).
                           Select(decisionName => decisionName.Field <string>(colCount - 1)).Distinct().ToList();
                if (diff.Count > 1)
                {
                    intlCndtn = false;
                    break;
                }
            }
            return(intlCndtn);
        }