2015-12-21 56 views
0

的LINQ我想改變我的代碼:計算速度最快的領域之和與其中的datacontext

using (DatabaseDataContext contestoDB = new DatabaseDataContext()) 
{ 
    contestoDB.ObjectTrackingEnabled = false; 

    DateTime dataSelezionata = DateTime.Parse(data); 

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

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

在這種類似的功能獲得現場的總和與其中:d:

var sum = contestoDB.Eventi.Sum(x => x.OrePreviste); 

之和必須一個int值... 謝謝 MW

回答

2

請參閱以下內容:

var sum = contestoDB.Eventi 
    .Where(w => w.DataPrenotazione.Date == dataSelezionata.Date) 
    .Sum(x => x.OrePreviste); 
+0

我穿上它而不是工作:(INT oreOccupate = Convert.ToInt32(contestoDB.Eventi 。在哪裏(w => w.DataPrenotazione.Date == dataSelezionata.Date) .Sum(x => x.OrePreviste));如果空崩潰... :( –

+0

好吧我解決了這個:oreOccupat e = contestoDB.Eventi.AsQueryable() .Where(w => w.DataPrenotazione.Date == dataSel.Date) .Sum(x =>(int?)x.OrePreviste)?? 0;謝謝!!! –

2

你可以做一個投影,並取其總和的投影值。

var sum = (from db in contestoDB.Eventi 
    where db.DataPrenotazione.Date == dataSelezionata.Date 
    select db.OrePreviste).Sum(); 

或等價試試這個:

var sum = contestoDB.Eventi 
    .Where(evt => evt.DataPrenotazione.Date == dataSelezionata.Date) 
    .Sum(evt => evt.OrePreviste);