2011-05-05 27 views
38

मैं एक DataTable जो 5 कॉलम है।asp.net में डेटाटेबल कॉलम के योग की गणना कैसे करें?</p> <ul> <li>आईडी</li> <li>नाम</li> <li>खाता संख्या</li> <li>शाखा</li> <li>राशि</li> </ul> <p>DataTable 5 पंक्तियां हैं:

मैं लेबल नियंत्रण में राशि कॉलम की राशि "कुल राशि" के रूप में कैसे दिखा सकता हूं?

+0

आप है DataTable द्वारा ADO.Net DataTable या आप डेटाबेस तालिका मतलब है लगता है? –

+0

क्या डेटा तालिका का उपयोग कुल आपूर्ति करने के लिए किया जा रहा है या क्या यह किसी अन्य नियंत्रण से बंधे हुए है, जैसे कि ग्रिड व्यू या दोहराना? आप पूरी तरह से नीचे जोनाथन वुड्स सुझावों का कुल उपयोग निकालने जा रहे हैं। –

+0

क्या आपको पता है कि आपके पास 5 पंक्तियां हैं, या यह कम या ज्यादा हो सकती है? –

उत्तर

92

डेटाटेबल में कॉलम के योग की गणना करने के लिए DataTable.Compute विधि का उपयोग करें।

DataTable table; 
table = dataSet.Tables["YourTableName"]; 

// Declare an object variable. 
object sumObject; 
sumObject = table.Compute("Sum(Amount)", ""); 

प्रदर्शन इतना की तरह अपने कुल राशि लेबल में परिणाम: लिंक किए गए MSDN लेख से उपयोग के

उदाहरण

lblTotalAmount.Text = sumObject.ToString(); 
+0

वह फ़िल्टरेशन अभिव्यक्ति नहीं चाहता है, वह सिर्फ सभी पंक्तियों की गणना करना चाहता है। आपके उत्तर में, फ़िल्टरेशन अभिव्यक्ति का अर्थ है, यह योग की गणना करेगा जहां EmpId = 5. –

+0

यह फ़िल्टर के लिए पूछता है। मेरे पास फ़िल्टर करने की कोई शर्त नहीं है। मैं डेटाटेबल में सभी पंक्तियों को जोड़ना चाहता हूं। – thevan

+0

@thevan, आप मेरा समाधान देख सकते हैं, यह पूरी तरह से काम करता है। –

22
this.LabelControl.Text = datatable.AsEnumerable() 
    .Sum(x => x.Field<int>("Amount")) 
    .ToString(); 

आप परिणामों को फ़िल्टर करना चाहते हैं:

this.LabelControl.Text = datatable.AsEnumerable() 
    .Where(y => y.Field<string>("SomeCol") != "foo") 
    .Sum(x => x.Field<int>("MyColumn")) 
    .ToString(); 
+0

धन्यवाद थॉमस। मैंने आपके उत्तर से एक नई चीज़ सीखी। – thevan

8

यदि आप एच एवेन्यू एक ADO.Net DataTable आप

int sum = 0; 
foreach(DataRow dr in dataTable.Rows) 
{ 
    sum += Convert.ToInt32(dr["Amount"]); 
} 

कर सकता है आप डेटाबेस तालिका क्वेरी करना चाहते हैं, तो आप इस्तेमाल कर सकते हैं

Select Sum(Amount) From DataTable 
14

आप की तरह कर सकते हैं ..

DataRow[] dr = dtbl.Select("SUM(Amount)"); 
txtTotalAmount.Text = Convert.ToString(dr[0]); 
+0

धन्यवाद अख्तर। – thevan

5
public decimal Total() 
    { 
     decimal decTotal=(datagridview1.DataSource as DataTable).Compute("Sum(FieldName)",""); 
     return decTotal; 
    } 
0

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

var allEntries = from r in dt.AsEnumerable() 
          select r["Amount"]; 

नाम अंतरिक्ष using System.Linq;

का उपयोग कर आप DataTable में Myblog

2

कंप्यूट स्तंभ का योग पर नमूना कुल, में datatable ग # का उपयोग कर उप-योग, महायोग पा सकते हैं, काम करता है 100%

lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "").ToString(); 

अगर आप कोई शर्त चाहते हैं, इसे

lbl_TotaAmt.Text = MyDataTable.Compute("Sum(BalAmt)", "srno=1 or srno in(1,2)").ToString(); 
0

प्रयास करें इस

int sum = 0; 
foreach (DataRow dr in dt.Rows) 
{ 
    dynamic value = dr[index].ToString(); 
    if (!string.IsNullOrEmpty(value)) 
    { 
     sum += Convert.ToInt32(value); 
    } 
} 
0

मैं इस को हल करती है

using System.Linq; 


(datagridview1.DataSource as DataTable).AsEnumerable().Sum(c => c.Field<double>("valor")) 
संबंधित मुद्दे