예제 #1
0
        private void SetSubQueryValue(ReleatedQuery config, IValueSetter valueSetter, IEnumerable <object> parents, IEnumerable <object> datas)
        {
            var compareFields = config.CompareFields ?? new string[] { };
            Dictionary <string, string> mf = compareFields.Select(cf => cf.Split(SqlKeyWorld.Split)).ToDictionary(c => c[0], c => c[1]);
            var matchOneTime = config.MatchOneTime;

            foreach (var parent in parents)
            {
                IEnumerable <object> matchDatas = ValueGetter.GetFilterValues(mf, parent, datas);
                var handler = ReleatedFillHandlerFactory.Create(config);
                var data    = handler.Fill(config, parent, matchDatas, valueSetter);
                if (matchOneTime == false)
                {
                    continue;
                }

                datas = datas.Except(matchDatas).ToArray();
            }
        }