gpt4 book ai didi

c# - 在 SQL 或 C# 中对列求和

转载 作者:太空宇宙 更新时间:2023-11-03 20:36:50 25 4
gpt4 key购买 nike

我有一个问题要问那里的 TSQL 专家或那里的 LINQ C# 专家。我有一个连接在几个表中的存储过程。基本上是Name,ID,还有大概10个product栏目。存储过程可以返回大量数据(有时超过 90,000 行)。在存储过程中,我过滤结果以过滤掉该行中所有产品 = 0 的所有行。我需要做的是删除 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
};

找出哪个是0

if (zeroCols.Count() > 0)
{
if (zeroCols.First().Prod1 == 0)
hideColumns.Add("Prod1");
...etc to Prod10
}

但是,我的问题是如果报表返回很多行,LINQ 真的很慢。任何人都可以提出任何建议吗?

最佳答案

将其拆分为两个查询会更快 - 一个返回数据,另一个聚合查询返回单行。聚合查询的返回值可用于确定哪些列为 0 且应隐藏。

关于c# - 在 SQL 或 C# 中对列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748858/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com