У меня есть вопрос к экспертам TSQL или экспертам LINQ C #.У меня есть хранимая процедура, которая объединяет несколько таблиц.В основном название, идентификатор и около 10 столбцов продукта.Хранимая процедура может вернуть много данных (иногда более 90 000 строк).В сохраненной процедуре я фильтрую результаты, чтобы отфильтровать все строки, где все продукты в этой строке = 0. Что мне нужно сделать, это удалить столбцы в C #, где все значения в столбце (product) равны нулю.Это связано с некоторыми бизнес-правилами в моем приложении (запрос клиента).
Приложение может удалять (скрывать) столбцы, отправляя массив имен столбцов в построитель отчетов.Например:
| Имя | 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
};
Чтобы найти значение 0
if (zeroCols.Count() > 0)
{
if (zeroCols.First().Prod1 == 0)
hideColumns.Add("Prod1");
...etc to Prod10
}
Однако моя проблема в том, что LINQ действительно медленный, если отчет возвращает много строк.Кто-нибудь может сделать какие-либо предложения?