gpt4 book ai didi

c# - linq选择总和和平均值进入 View 模型

转载 作者:行者123 更新时间:2023-11-30 20:21:48 27 4
gpt4 key购买 nike

如何在单个选择语句中执行此操作?

var data = new CampaignData()
{
TotalPost = await context.Campaigns.SumAsync(c => c.Posts),
AveragePost = await context.Campaigns.AverageAsync(c => c.Posts),
TotalImpression = await context.Campaigns.SumAsync(c => c.Impressions),
AverageImpressions = await context.Campaigns.AverageAsync(c => c.Impressions),
};

最佳答案

您可以按常量分组,以便获得总和和平均值。然后使用 SingleAsync 获取单个结果。

var data = await (from compaign in context.Compaigns
group compaign by 1 into grp
select new CampaignData()
{
TotalPost = grp.Sum(cc => cc.Posts),
AveragePost = grp.Average(c => c.Posts),
TotalImpression = grp.Sum(c => c.Impressions),
AverageImpressions = grp.Average(c => c.Impressions),
}).SingleAsync();

另一种选择是让您的异步数据库调用并行运行

var totalPostTask = context.Campaigns.SumAsync(c => c.Posts);
var averagePostTask = context.Campaigns.AverageAsync(c => c.Posts);
var totalImpressionTask = context.Campaigns.SumAsync(c => c.Impressions);
var averageImpressionsTask = context.Campaigns.AverageAsync(c => c.Impressions);

await Task.WhenAll(
totalPostTask,
averagePostTask,
totalImpressionTask,
averageImpressionsTask);

var data = new CampaignData()
{
TotalPost = totalPostTask.Result,
AveragePost = averagePostTask.Result,
TotalImpression = totalImpressionTask.Result,
AverageImpressions = averageImpressionsTask.Result,
};

如果非要我猜的话,我会说单个数据库调用的性能会更好,但您始终可以测试这两个选项,看看哪个更好。

关于c# - linq选择总和和平均值进入 View 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33220005/

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