2011-06-06 11 views
8

के अंदर 'Sum' मेरे पास एक LINQ-to-SQL क्वेरी है जो एक तालिका के माध्यम से चलती है, जिसे मैं 3 योग का चयन करना चाहता हूं - 'दर' और 'अतिरिक्त चार्ज' की रकम, - जो काफी अक्षम लगताLINQ-to-SQL - एक नया नया

var sums = from d in dc.Deliveries 
where d.TripDate == DateTime.Now 
select new 
{ 
    Rate = d.Rate, 
    AdditionalCharges = d.AdditionalCharges 
}; 

हालांकि, स्पष्ट रूप से यह एक नई पंक्ति हर गेंद, जिसका मतलब है मैं बाद में उन्हें योग करने के लिए है के लिए देता है: तो मैं कुछ इस तरह की है। क्या कोई आसान तरीका है?

उत्तर

10

आप क्वेरी सिंटैक्स का उपयोग करते हैं तो आपको निम्न

var data = dc.Deliveries.Where(d => d.TripDate == DateTime.Now) 
var rateSum = data.Sum(d => d.Rate); 
var additionalCharges = data.Sum(d => d.AdditionalCharges); 

इसके बंद होने पर की तरह कुछ कर सकते हैं नीचे समूह अलविदा समारोह की कोशिश कर सकते मेरे सिर के शीर्ष और परीक्षण नहीं किया गया

+0

जब आप मुझे भी हराते हैं तो बस वही कोड लिख रहे थे :) – NotJarvis

+0

लॉल, मैं SO पर होने के बाद से बहुत तेज टाइप करता हूं – NinjaNye

8

सुनिश्चित नहीं हैं, लेकिन आप के रूप में

var sums = from d in dc.Deliveries 
where d.TripDate == DateTime.Now 
group d by new {d.Rate,d.AdditionalCharges,d.TripDate} into g 
select new 
{ 
    Rate = g.Sum(s => s.Rate), 
    AdditionalCharges = g.Sum(s => s.AdditionalCharges) 
}; 
0
var sums = from d in dc.Deliveries 
    where d.TripDate == DateTime.Now 
    Group by d.TripDate // or primary key 
    Into TotalRate = sum(d.Rate), 
    TotalAdditionalCharges = sum(d.AdditionalCharges) 
    Select TotalRate , TotalAdditionalCharges 
14

मुझे पता है कि यह एक पुराना सवाल है, लेकिन हे, मैंने इसे पाया, तो उम्मीद है कि यह हेल होगा किसी और पी किसी ...

आप भी इस का उपयोग कर Fluent वाक्य रचना कर सकते हैं:

var sums = dc.Deliveries 
      .Where(d => d.TripDate == DateTime.Now) 
      .GroupBy(d => d.TripDate) 
      .Select(g => 
       new 
       { 
        Rate = g.Sum(s => s.Rate), 
        AdditionalCharges = g.Sum(s => s.AdditionalCharges) 
       }); 

आशा इस कोई मदद करता है ...

3

ऐसा करने के लिए सक्षम होना चाहिए:

DateTime d = DateTime.Now; 
var sums = from d in dc.Deliveries 
select new 
{ 
    Rate = dc.Deliveries.Where(n => n.TripDate == d).Sum(n => n.Rate), 
    AdditionalCharges = dc.Deliveries.Where(n => n.TripDate == d).Sum(n => n.AdditionalCharges) 
}; 

var result = sums.FirstOrDefault();