我对那里的TSQL专家或那里的LINQ C#专家有疑问.我有一个存储过程连接在几个表中.基本上是名称,ID和大约10个产品列.存储过程可以返回大量数据(有时为90,000多行).在存储过程中,我过滤结果以过滤掉该行中所有产品的所有行= 0.我需要做的是删除C#中的列,其中列(产品)中的所有值都为零.这是由于我的应用程序中的一些业务规则(客户请求).
应用程序可以通过将一组列名称发送到报表生成器来删除(隐藏)列.例如:
|名称| ID | PROD1 | Prod2的| Prod3 | Prod4 |
如果我想从报告中删除Prod3和Prod4:
List<string> hideColumns = new List<string>();
hideColumns.Add("Prod3");
hideColumns.Add("Prod4");
Run Code Online (Sandbox Code Playgroud)
我会将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
};
Run Code Online (Sandbox Code Playgroud)
找到哪个是0
if (zeroCols.Count() > 0)
{
if (zeroCols.First().Prod1 == 0)
hideColumns.Add("Prod1");
...etc to Prod10
}
Run Code Online (Sandbox Code Playgroud)
但是,我的问题是如果报告返回很多行,LINQ真的很慢.任何人都可以提出任何建议吗?
| 归档时间: |
|
| 查看次数: |
1019 次 |
| 最近记录: |