public IFieldMapper Parse(JobParser parser, ParseState state) { var source = state.TryGet("Select", "Pages", true); var path = source.Split('.'); source = path[0]; var name = state.TryGet("Name", source); Type itemType; var items = Selectors.SelectFromName(source, out itemType); var selector = string.Join(".", path.Skip(1)); if (string.IsNullOrEmpty(selector)) { selector = Selectors.DefaultSelector(source); } var getterInfo = parser.CompileGetter(itemType, selector); return(new SequenceFieldMapper(name, scope => items(scope).Select(item => getterInfo.Getter(item, scope)), (SequenceType) Enum.Parse(typeof(SequenceType), state.TryGet("Type", "Path"), true))); }