我如何优化此 linq 函数来计算 "OrePreviste" 的总和?

How can i optimize this linq function for calculating sum of "OrePreviste"?

表格是这样的:

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 语句,因此只调用一次.