Пример #1
0
        protected override Dictionary <Product, IEnumerable <string> > GetValues(List <Product> objs)
        {
            ProductVariant          productVariantAlias = null;
            OptionValueData         data   = null;
            IList <OptionValueData> values = _session.QueryOver <ProductOptionValue>()
                                             .JoinAlias(value => value.ProductVariant, () => productVariantAlias)
                                             .SelectList(builder => builder
                                                         .Select(value => value.Value).WithAlias(() => data.Value)
                                                         .Select(value => value.ProductOption.Id).WithAlias(() => data.OptionId)
                                                         .Select(() => productVariantAlias.Product.Id).WithAlias(() => data.ProductId)
                                                         ).TransformUsing(Transformers.AliasToBean <OptionValueData>())
                                             .List <OptionValueData>();

            Dictionary <int, IEnumerable <string> > dictionary =
                values.GroupBy(valueData => valueData.ProductId)
                .ToDictionary(datas => datas.Key, datas => datas.Select(valueData => valueData.TermValue));

            return(objs.ToDictionary(product => product,
                                     product => dictionary.ContainsKey(product.Id) ? dictionary[product.Id] : Enumerable.Empty <string>()));
        }
 protected override IEnumerable <string> GetValues(Product obj)
 {
     return
         (obj.Variants.SelectMany(variant => variant.OptionValues)
          .Select(i => OptionValueData.GetValue(i.ProductOption.Id, i.Value)));
 }