#c# #sql #union
#c# #sql #объединение
Вопрос:
У меня есть объект с именем Product, который имеет атрибут ProductItem и теги.
public class Shop{
public string Id {get; set;}
public Product Products {get; set;}
}
public class Product{
public string Name {get; set;}
public string Id {get; set;}
public Tag Tags {get; set;}
public ProductItem ProductItems {get; set;}
public Shop ShopInformation {get; set;}
}
public class Tag{
public string Id {get; set;}
public string name {get; set;}
}
public class ProductItem{
public string Id {get; set;}
public Tag Tags {get; set;}
}
Я хотел бы получить все теги как в продуктах, так и в тегах из datacontext
, и я использую этот запрос
var result = from shop in dataContext.Shop
select new Response
{
Id = shop.Id,
Tags = (from product in dataContext.Product
where product.ShopInformation.Id == shop.Id
from productTag in
product.Tags.Union(product.ProductItems.SelectMany(s => s.Tags))
select productTag.Name).Distinct(),
};
Однако производительность довольно низкая, и поэтому я хотел бы знать, есть ли способ быстрее собирать все теги.
Комментарии:
1. Как выглядит сгенерированный SQL-запрос? Вы взглянули на план выполнения?
2. Элементы productItems являются внутренними для продукта и объединяют все со всеми артикулами в продукте. Процесс повторяется для всех магазинов