У меня есть следующий фрагмент кода:Как хранить различные GroupBy в одной переменной с минимальным дублированием кода?
var newProducts = _summaryRepository.GetFilteredSummaries(manufacturerIds, countryIds, categoryIds,
null, widgetIds, startDate, null).Where(s => s.Product.ProductCountries.FirstOrDefault(pc => pc.CountryId == s.CountryId).CreatedAt >= startDate.Value)
.GroupBy(s => new { widgetId = s.widgetId, ProductId = s.ProductId });
Если у меня есть условие Показать все, что я хочу, чтобы взять следующий из GroupBy:
WidgetId = s.WidgetId
Так что теперь было бы:
var newProducts = _summaryRepository.GetFilteredSummaries(manufacturerIds, countryIds, categoryIds,
null, widgetIds, startDate, null).Where(s => s.Product.ProductCountries.FirstOrDefault(pc => pc.CountryId == s.CountryId).CreatedAt >= startDate.Value)
.GroupBy(s => new {ProductId = s.ProductId });
Существует много кода, который зависит от newProducts, и когда я создал оператор if и поместил var newProducts в outerscrope, он останавливается. E все работает.
Я знаю, что это, наверное, глупый вопрос, но как я могу это сделать с минимальным повторяющимся кодом?
Является ли это, что я объявляю переменную неправильно, когда я делаю это:
var newProducts;
if(model.allWidgets)
{newProducts = _summaryRepository.GetFilteredSummaries(manufacturerIds, countryIds, categoryIds,
null, WidgetIds, startDate, null).Where(s => s.Product.ProductCountries.FirstOrDefault(pc => pc.CountryId == s.CountryId).CreatedAt >= startDate.Value)
.GroupBy(s => new {ProductId = s.ProductId });}
else
{
newProducts = _summaryRepository.GetFilteredSummaries(manufacturerIds, countryIds, categoryIds,
null, WidgetIds, startDate, null).Where(s => s.Product.ProductCountries.FirstOrDefault(pc => pc.CountryId == s.CountryId).CreatedAt >= startDate.Value)
.GroupBy(s => new { WidgetId = s.WidgetId, ProductId = s.ProductId });
}
ваш рефакторинга во многом зависит от того, как вы используете 'newProducts'. Как вы видите, «newProducts» может быть совершенно другого типа (разветвленный по-разному). Это означает, что ваш код становится *** динамическим *** (позже). – Hopeless