gpt4 book ai didi

c# - 我如何优化此 linq 函数以计算 "OrePreviste"的总和?

转载 作者:行者123 更新时间:2023-11-30 15:23:35 24 4
gpt4 key购买 nike

表格是这样的:

Table

linq中的函数是这样的:

 public int CalcolaOreOccupate(string data)
{
int oreOccupate = 0;

if (String.IsNullOrEmpty(data))
{
using (DatabaseDataContext contestoDB = new DatabaseDataContext())
{
contestoDB.ObjectTrackingEnabled = false;

var elencoOre = (from db in contestoDB.Eventi
where db.DataPrenotazione.Date == DateTime.Now.Date
select db);

foreach (var o in elencoOre)
{
oreOccupate += o.OrePreviste;
}
}

}
else
{
/* ... othere code ... */
}

return oreOccupate;
}

oreOccupate 是 OrePreviste 的总和。我想获得更好的功能。我该如何处理linq?谢谢

最佳答案

只需使用 Sum() 扩展方法:

var nowDate = DateTime.Now.Date; 
oreOccupate = contestoDB.Eventi
.Where(x => x.DataPrenotazione.Date == nowDate)
.Select(x => x.OrePreviste)
.DefaultIfEmpty(0)
.Sum();

当你像你展示的那样做时,你基本上将所有数据从数据库获取到你的服务器进行处理,如果你使用 MS SQL,你可以像我展示的那样转换你的查询,以使用 LinqToSQL 在你的数据库中进行所有计算

正如评论中的@enigmativity 指出的那样,不需要在单独的变量中初始化 DateTime.Now.Date,因为您使用的是 linqtosql,它将被转换为只调用一次的 sql 语句。

关于c# - 我如何优化此 linq 函数以计算 "OrePreviste"的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34311364/

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