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;
}
答案 0 :(得分:4)
只需使用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点,因为你使用linqtosql而不需要在单独的变量中初始化DateTime.Now.Date
,它将被翻译成只调用一次的sql语句。