public object Fill(ReleatedQuery config, object parent, IEnumerable <object> matchDatas, IValueSetter valueSetter) { var data = matchDatas.FirstOrDefault(); valueSetter.SetField(parent, data, config.Filed); return(data); }
public object Fill(ReleatedQuery config, object parent, IEnumerable <object> matchDatas, IValueSetter valueSetter) { var data = matchDatas.FirstOrDefault(); var fieldCount = config.FillFields.Count(); var dValueCount = config.DefaultValues.Count(); if (data == null) { for (var i = 0; i < fieldCount; i++) { var field = config.FillFields.ElementAt(i); if (i >= dValueCount) { break; } var val = config.DefaultValues.ElementAt(i); valueSetter.SetField(parent, val, field); } return(null); } for (var i = 0; i < fieldCount; i++) { var field = config.FillFields.ElementAt(i); var val = ValueGetter.GetValue(field, data).Data; valueSetter.SetField(parent, val, field); } return(null); }
public static IFillHandler Create(ReleatedQuery config) { switch (config.FillType) { case 0: return(ArrayFillHandler.Instance); case 1: return(SingleRecodFillHandler.Instance); case 2: return(FieldsFillHandler.Instance); } throw new ArgumentException("未找到匹配的字段填充方式!"); }
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(); } }
public object Fill(ReleatedQuery config, object parent, IEnumerable <object> matchDatas, IValueSetter valueSetter) { valueSetter.SetField(parent, matchDatas, config.Filed); return(matchDatas); }