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