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); }
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); }