/// <summary> /// AdjustMappingValues 当属性匹配值为null时,可以将其替换为所有的区分值,并与其它属性匹配值做笛卡尔交集,得到多组匹配条件。 /// 辅助以简化Emit实现。 /// </summary> public static List <object[]> AdjustMappingValues(object[] propertyValues4Classify, IList[] distinctValList) { List <object[]> resultList = new List <object[]>(); Dictionary <int, IList <object> > dic = new Dictionary <int, IList <object> >(); for (int i = 0; i < propertyValues4Classify.Length; i++) { if (propertyValues4Classify[i] == null) { List <object> copy = new List <object>(); foreach (object obj in distinctValList[i]) { copy.Add(obj); } dic.Add(i, copy); } else { IList <object> list = new List <object>(); list.Add(propertyValues4Classify[i]); dic.Add(i, list); } } SimpleCrossJoiner <object> crossJoiner = new SimpleCrossJoiner <object>(); for (int i = 0; i < propertyValues4Classify.Length; i++) { crossJoiner.CrossJoin(dic[i]); } foreach (CrossJoinPath <object> path in crossJoiner.Result) { resultList.Add(path.Path.ToArray()); } return(resultList); }
public static List <object[]> AdjustMappingValues(object[] propertyValues4Classify, IList[] distinctValList) { int num; List <object[]> list = new List <object[]>(); Dictionary <int, IList <object> > dictionary = new Dictionary <int, IList <object> >(); for (num = 0; num < propertyValues4Classify.Length; num++) { if (propertyValues4Classify[num] == null) { List <object> list2 = new List <object>(); foreach (object obj2 in distinctValList[num]) { list2.Add(obj2); } dictionary.Add(num, list2); } else { IList <object> list3 = new List <object>(); list3.Add(propertyValues4Classify[num]); dictionary.Add(num, list3); } } SimpleCrossJoiner <object> joiner = new SimpleCrossJoiner <object>(); for (num = 0; num < propertyValues4Classify.Length; num++) { joiner.CrossJoin(dictionary[num]); } foreach (CrossJoinPath <object> path in joiner.Result) { list.Add(path.Path.ToArray()); } return(list); }