Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static IEnumerable<TResult> GroupJoin<T1, T2, T3, TKey, TResult>(
- this IEnumerable<T1> source1, IEnumerable<T2> source2, IEnumerable<T3> source3,
- Func<T1, TKey> key1Selector,
- Func<T2, TKey> key2Selector,
- Func<T3, TKey> key3Selector,
- Func<T1, IEnumerable<T2>, IEnumerable<T3>, TResult> resultSelector)
- {
- var lookup2 = source2.ToLookup(item => key2Selector(item));
- var lookup3 = source3.ToLookup(item => key3Selector(item));
- foreach (var item1 in source1)
- {
- TKey key1 = key1Selector(item1);
- IEnumerable<T2> items2 = lookup2[key1];
- IEnumerable<T3> items3 = lookup3[key1];
- TResult result = resultSelector(item1, items2, items3);
- yield return result;
- }
- }
- public ICollection<ProductModel> GetAllProductsWithImagesSortByValue(List<int> values)
- {
- return context.Product.GroupJoin(
- context.ProductValue,
- context.ImageObject.Include(x => x.Image),
- p => p.ProductId,
- pv => pv.ProductId,
- io => io.ProductId,
- (p, pv, io) => new ProductModel
- {
- ProductId = p.ProductId,
- Name = p.Name,
- Price = p.Price,
- ProductValue = pv
- .Select(npv => new ProductValueModel
- {
- ValueId = npv.ValueId,
- })
- .ToList(),
- ImageObject = io
- .Select(nio => new ImageObjectModel
- {
- Image = nio.Image.DtoToModel(),
- IsDefault = nio.IsDefault,
- ProductId = nio.ProductId
- })
- .ToList(),
- })
- .ToCollection();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement