У меня есть вопрос для экспертов TSQL или экспертов LINQ C#. У меня есть хранимая процедура, которая объединяется в несколько таблиц. В основном имя, идентификатор и около 10 столбцов продукта. Хранимая процедура может возвращать много данных (иногда бывает 90 000 + строк). В сохраненной proc я фильтрую результаты для фильтрации всех строк, где все продукты в этой строке = 0. Мне нужно сделать это, чтобы удалить столбцы на C#, где все значения в столбце (продукте) равны нулю. Это связано с некоторыми бизнес-правилами в моем приложении (запрос клиента).Сумма столбца в SQL или C#
Приложение может удалять (скрывать) столбцы, отправляя массив имен столбцов в построитель отчетов. Например:
| ID | Prod1 | Prod2 | Prod3 | Prod4 |
Если бы я хотел, чтобы удалить Prod3 и Prod4 из доклада:
List<string> hideColumns = new List<string>();
hideColumns.Add("Prod3");
hideColumns.Add("Prod4");
и я пошлю hideColumns.ToArray() застройщику отчета и эти столбцы будут удалены.
В моем приложении я отправляю все данные, а затем использую следующий LINQ, чтобы найти значения столбцов для возвращаемых данных.
var zeroCols = from result in data
group result by new { } into C
select new ProductDataClass
{
Prod1 = C.Sum(x => x.Prod1)
Prod2 = C.Sum(x => x.Prod2)
...etc to Prod10
};
Чтобы найти что-
if (zeroCols.Count() > 0)
{
if (zeroCols.First().Prod1 == 0)
hideColumns.Add("Prod1");
...etc to Prod10
}
Однако, моя проблема заключается в том, что LINQ очень медленно, если отчет возвращает много строк. Может ли кто-нибудь сделать какие-либо предложения?
Что делает 'group результат new {}' do? Это новое для меня. –