C# Aggregate Calculations

जब हमें किसी DataTable के हर Row पर कोई Calculation Perform करनी होती है, तब हम पिछला तरीका Use करते हुए DataColumn Object की Expression Property को Use करते हैं। लेकिन जब हमें Aggregate Calculations Perform करनी होती है, तब इस प्रकार की Calculations Perform करने के लिए हम DataTable Object के Compute() Method को भी Use कर सकते हैं।

उदाहरण के लिए मानलो कि हम सभी Products की Total Price को जोडना चाहते हैं ताकि हमें इस बात का पता चले कि हमारा कुल Stock कितने का है। इस जरूरत को पूरा करने के लिए हम निम्न SQL Query का प्रयोग करते हैं:

SELECT SUM(Price)                FROM Products;

इसी Result को अपने DataTable द्वारा प्राप्त करने के लिए हमें हमारे DataTable के Compute Method को Use करना होता है। हम इस Method की Working को बेहतर तरीके से समझने के लिए हम हमारे पिछले Form को ही निम्नानुसार Modify करते हुए उस “Total Amount” नाम का Button Place कर सकते हैं, जो कि सभी Products के Total Amount को Calculate करके एक MessageBox के माध्‍यम से Output में Display करता है:

C# Aggregate Calculations - Hindi

इस Form के Codes को हमने निम्नानुसार Modify किया है:

        private dsSSF.ProductsDataTable dtProducts = new dsSSF.ProductsDataTable();
        private dsSSFTableAdapters.ProductsTableAdapter daProducts = 
new dsSSFTableAdapters.ProductsTableAdapter();

        private void frmAggregateMethod_Load(object sender, EventArgs e)
        {
            //Fill Products DataTable with Data
            daProducts.Fill(dtProducts);

            DataColumn calTotalPrice = new DataColumn("Total Price");
            calTotalPrice.Expression = "UnitPrice * UnitsInStock";
            dtProducts.Columns.Add(calTotalPrice);

            dgvProducts.DataSource = dtProducts;
        }

        private void btnTotalAmount_Click(object sender, EventArgs e)
        {
            string TotalAmount = dtProducts.Compute("SUM([Total Price])", "").ToString();
            MessageBox.Show("Total Amount of All Products: " + TotalAmount);
        }

जैसाकि इस Code में हम देख सकते हैं कि हमने हमारे DataTable व DataAdapter दोनों ही Objects को एक Private Property की तरह Specify कर दिया है। इसलिए इन दोनों Objects को हम पूरे Program के दौरान Define किए जाने वाले विभिन्न Event Handlers में समान रूप से Use कर सकते हैं। परिणामस्वरूप जैसे ही Form Load होता है, निम्न Code Execute होता है:

//Fill Products DataTable with Data
daProducts.Fill(dtProducts);

इस Code के Response में dtProducts Object, Underlying Database की Products Table के Data से Fill हो जाता है। फिर निम्न Code Execute होता है, जो एक नया DataColumn Create करता है और इस Column में UnitPrice * UnitsInStock के Calculated Result को “Total Price” Heading वाले Column के रूप में DataTable में Add कर दिया जाता है, जिसे Form पर दिखाई देने वाले DataGridView Control के माध्‍यम से Display कर दिया जाता है

DataColumn calTotalPrice = new DataColumn(“Total Price”);
calTotalPrice.Expression = “UnitPrice * UnitsInStock”;
dtProducts.Columns.Add(calTotalPrice);
dgvProducts.DataSource = dtProducts;

परिणामस्वरूप जब ये Code Execute हो जाता है, तो हमें पिछले चित्र के अनुसार हमारा Main Form दिखाई देने लगता है। इस दिखाई देने वाले Form पर स्थित “Total Amount” नाम के Button को जब हम Click करते हैं, तो इस Button के Click Event के Response में निम्नानुसार Code Execute होता है:

            DataColumn calTotalPrice = new DataColumn("Total Price");
            calTotalPrice.Expression = "UnitPrice * UnitsInStock";
            dtProducts.Columns.Add(calTotalPrice);

            dgvProducts.DataSource = dtProducts;

इस Method में सबसे पहले TotalAmount नाम का String Type का एक Object Create होता है, जिसमें dtProducts Object के Compute Method द्वारा Return होने वाले मान को एक String Value के रूप में Store कर दिया जाता है और अगले Statement में Specified MessageBox द्वारा TotalAmount Object में Stored Result को निम्न चित्रानुसार Output में Display कर दिया जाता है:

C# Aggregate Calculations - Hindi

इस Event Handler में हमने जो Compute() Method Use किया है, वह Method दो Parameters Accept करता है। पहले Parameter के रूप में हमें उस Aggregate Method को Specify करना होता है, जिसे हम Use करना चाहते है, जबकि दूसरे Parameter के रूप में हम किसी Condition को Specify कर सकते हैं। यदि हम पिछले Code से इस Concept को समझें, तो:

dtProducts.Compute(“SUM([Total Price])”, “”)

इस Code द्वारा dtProducts नाम की DataTable के [Total Price] नाम के Column के सभी Rows के मानों का योग होता है। यहां Column के नाम को हमने Brackets के बीच इसलिए Specify किया है, क्योंकि हमारे Column के नाम के बीच Space है। जबकि यदि यही नाम TotalPrice होता, तो हमें इसे Bracket के बीच Specify करने की जरूरत नहीं होती। यदि हम इसी Statement को निम्नानुसार Modify कर दें:

dtProducts.Compute(“SUM([Total Price])”, “[Total Price] > 1000”)

जब हम इस प्रकार से Compute() Method Specify करते हैं, तो ये Method केवल उन्हीं Records के Total Price Column की Value का जोड करता है, जिनका मान 1000 से ज्यादा है।

ADO.NET with C# in Hindi - BccFalna.com: TechTalks in Hindi ये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook ADO.NET with C# in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

ADO.NET with C# in Hindi | Page:501 | Format: PDF

BUY NOW GET DEMO REVIEWS