public override IEnumerable<ILookupItem> Select(ILookupQuery query){ var crit = DetachedCriteria.For(typeof (ICommonDictionaryValue)); if (query.First){ crit.SetMaxResults(1); } crit.Add(Restrictions.Eq("Dictionary", ParentDict)); if (query.Code.hasContent()){ if (query.CodeMask){ crit.Add(Restrictions.Like("Code", query.Code)); } else{ crit.Add(Restrictions.Eq("Code", query.Code)); } } if (query.Name.hasContent()){ if (query.NameMask){ crit.Add(Restrictions.Like("Name", query.Name)); } else{ crit.Add(Restrictions.Eq("Name", query.Name)); } } var result = new List<ILookupItem>(); var res = storage.Query<ICommonDictionaryValue>(crit); foreach (var value in res){ var item = new LookupItem{Alias = query.Alias, Code = value.Code, Name = value.Name}; item.Properties["Comment"] = value.Comment; item.Properties["Id"] = value.Id; item.Properties["Idx"] = value.Idx; item.Properties["Value"] = value.Value; result.Add(item); } return result; }
/// <summary> /// Выполнения запроса подстановки по логике - найти первый источник /// соответствующий заданному в запросе псевдониму /// и передать выполнение ему /// </summary> /// <exception cref="AliasNotRegesteredException">Псевдоним query.Alias не обнаружен среди источников ни у одного провайдера</exception> /// <param name="query">стандартный запрос подстановки</param> /// <returns>результат подстановки</returns> public IEnumerable<ILookupItem> Select(ILookupQuery query){ var source = Sources.FirstOrDefault(s => s.Alias == query.Alias); if (null == source){ throw new AliasNotRegesteredException(query.Alias); } return source.Select(query); }
/// <summary> /// Основная сигнатура запроса, соответствующая ILookupSource /// </summary> /// <param name="query">стандартный запрос подстановки</param> /// <returns>Коллекция объектов подстановки по запросу</returns> public static IEnumerable<ILookupItem> Select(ILookupQuery query){ // @"query".ioc.getNotNull(query); return Dispatcher.Select(query); }
public abstract IEnumerable<ILookupItem> Select(ILookupQuery query);