gpt4 book ai didi

c# - 加速此 LINQ to SQL 代码

转载 作者:太空宇宙 更新时间:2023-11-03 22:14:32 24 4
gpt4 key购买 nike

我正在开发一个 ASP.NET,我需要在其中显示 GridView 中每个帐户的每次购买(因此基本上每个购买都链接到一个帐户)。

问题是,我们有超过 6000 家供应商(当然,这些供应商可以筛选到大约 1000 家,客户通常会这样做),每个供应商都会有一些交易。所以你可以想象绑定(bind)这个数据所花费的时间是很长的——事实上,SQL server 偶尔会超时。遗憾的是我不能使用分页,因为所有数据都需要在一页中显示。

我正在做的类似于下面的代码(不在我的机器上所以不能完全复制)

IEnumerable<Account> accs = (from s in dc.Accounts select s);
foreach (Account acc in accs)
{
IEumerable<Purchases> purchs = (from s in dc.Purchases where s.AccountID == acc.ID select s);
double 30daysval;
double 60daysval;
foreach (Purchases purch in Purchases)
{
TimeSpan span = DateTime.Now - purch.Timestamp;
if (span.Days <= 30)
{
30daysval += purch.Value;
//Add a row to the grid
}
else if (span.Days <= 60)
{
60daysval += purch.Value
//Add a row to the grid
}
}
//Add total row for that account
}

是否有更快的方法来执行此操作,也许是在 LINQ 中使用 join 或其他方法?我知道这可能有点无望,因为涉及的数据很大,而且在一个页面上显示几千行是相当荒谬的,但这就是我被告知要做的......

任何想法或帮助将不胜感激

最佳答案

// Assuming that there is no fk keys.  Else you don't need joins.
var Purchases = dc.Accounts
.Join(dc.Purchases, a => a.Id, p => p.AccountId, (a,p) => new {a,p})
.Select(p);

double 30daysval;
double 60daysval;
foreach (Purchases purch in Purchases)
{
TimeSpan span = DateTime.Now - purch.Timestamp;
if (span.Days <= 30)
{
30daysval += purch.Value;
//Add a row to the grid
}
else if (span.Days <= 60)
{
60daysval += purch.Value
//Add a row to the grid
}
}

关于c# - 加速此 LINQ to SQL 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5514960/

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