public Bucket ConvertDataTableToBucket(DataTable dt) { Bucket bucket = new Bucket(); foreach (DataRow row in dt.Rows) { var tuple = new data.Tuple(); tuple.SetQid(qid); foreach (DataColumn column in dt.Columns) { string value = row[column].ToString().Trim(); tuple.AddValue(value); } bucket.Add(tuple); } return(bucket); }
public Bucket ConvertDataTableToBucket(DataTable dt) { Bucket bucket = new Bucket(); foreach (DataRow row in dt.Rows) { var tuple = new data.Tuple(); tuple.SetQid(qid); foreach (DataColumn column in dt.Columns) { string value = row[column].ToString().Trim(); tuple.AddValue(value); } bucket.Add(tuple); } return bucket; }
/// <summary> /// Adds the mapped integer values to A and B. /// </summary> /// <param name="bucket">the bucket that to be examined</param> /// <param name="qid">QI indecies</param> void CreateAB(Bucket bucket, int[] qid) { ids = new string[bucket.Count]; // here the sensitive value signifies, if the tuple is in B or not // store the sensitive value indexes in this: sensitiveValueIndexes = new List <int>(); dictionary = new Dictionary <string, int>(); for (int k = 0; k < bucket.Count; k++) { data.Tuple tuple = bucket[k]; // I suppose that the sensitive value is the last one int dimension = tuple.GetNumberOfAttributes() - 1; int sensitiveValue = Convert.ToInt32(tuple.GetValue(dimension)); if (sensitiveValue == 1) { sensitiveValueIndexes.Add(k); } } //1. Initialize A and B. A = new int[bucket.Count][]; for (var i = 0; i < A.Length; i++) { A[i] = new int[qid.Length]; } B = new int[sensitiveValueIndexes.Count][]; for (var i = 0; i < B.Length; i++) { B[i] = new int[qid.Length]; } int nextIndexForB = -1; // 2. Add the mapped integer values to A and B // In A, row index corresponds to the tuple index. In B row index doesn't have extra information. // column index corresponds to the attributes index for (int k = 0; k < bucket.Count; k++) { data.Tuple tuple = bucket[k]; int dimension = tuple.GetNumberOfAttributes() - 1; // I suppose that the sensitive value is the last one //int sensitiveValue = Convert.ToInt32(eq[k].GetValue(eq[k].getNumberOfAttributes() - 1)); int sensitiveValue = Convert.ToInt32(tuple.GetValue(dimension)); if (sensitiveValue == 1) { nextIndexForB++; } //Add the id attribute: 0 in this case ids[k] = (bucket[k].GetValue(0)); for (int y = 0; y < qid.Count(); y++) { int value = -1; string key = bucket[k].GetValue(qid[y]); // map the original values to small integers if (dictionary.ContainsKey(key)) { value = dictionary[key]; } else { dictionary[key] = valueCount++; value = dictionary[key]; } A[k][y] = value; if (sensitiveValue == 1) { B[nextIndexForB][y] = value; } } } }