コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }