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