2015-12-21 2 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); 

сумма должна быть a int value ... Thanks 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)); if null crash ... :( –

+0

ok Я решил с этим: oreOccupat e = contestoDB.Eventi.AsQueryable() . Где (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); 
Смежные вопросы