محاسبه مجموع ستونهای DataTable با استفاده از #C و VB.Net

در این مقاله نحوه محاسبه مجموع ستونهای DataTable در #C و VB.Net را شرح خواهیم داد

در این نمونه توضیحات و مثالی که ذکر خواهد شد شامل دو بخش است :

1 : تابع محاسبه DataTable

2 : دستورات LINQ

Data Table :

ایتدا جدولی شامل لیست حقوق کارمندان را ایجاد میکنیم .جدول ایجاد شده برای محاسبه مجموع دستمزد کارمندان به کار میرود , محاسبه ستونهای این جدول با استفاده از دستورات LINQ انجام می پذیرد .

کد #C :


DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("EmployeeId", typeof(int)),
        new DataColumn("Name", typeof(string)),
        new DataColumn("Salary", typeof(int)) });
dt.Rows.Add(1, "John Hammond", 45000);
dt.Rows.Add(2, "Mudassar Khan", 32000);
dt.Rows.Add(3, "Robert Schidner", 19000);
dt.Rows.Add(3, "Suzanne Mathews", 18500);

کد VB.Net :


Dim dt As New DataTable()
dt.Columns.AddRange(New DataColumn(2) {New DataColumn("EmployeeId", GetType(Integer)), _
                                       New DataColumn("Name", GetType(String)), _
                                       New DataColumn("Salary", GetType(Integer))})
dt.Rows.Add(1, "John Hammond", 45000)
dt.Rows.Add(2, "Mudassar Khan", 32000)
dt.Rows.Add(3, "Robert Schidner", 19000)
dt.Rows.Add(3, "Suzanne Mathews", 18500)

محاسبه مجموع رکوردهای یک ستون در جدول :

تابع محاسبه مجموع رکوردهای ستون دو پارامتر دریافت میکند :

1 - Expression : یک تابع برای کار با مجموعه ای از مقادیر میباشد (مانند SUM , COUNT , MIN , MAX , AVG)

2 - Filter : برای قرار دادن فیلتر بر روی ردیف های موجود میباشد , مانند قرار دادن شرط با دستور Where

در ادامه یک متغیر با نام sum تعریف میکنیم :

#C :


int sum = Convert.ToInt32(dt.Compute("SUM(Salary)", string.Empty));

VB.Net :


Dim sum As Integer = Convert.ToInt32(dt.Compute("SUM(Salary)", String.Empty))

محاسبه مجموع در جدول با استفاده از دستورات LINQ :

LINQ به ما اجازه میدهد به راحتی مجموع ردیفها را بر اساس شرطی خاص محاسبه کند

در ادامه دستورات محاسبه مجموع را با استفاده از دستور LINQ مشاهده می کنید :

#C :


int sum = dt.AsEnumerable().Sum(row => row.Field<int>("Salary"));

VB.Net


Dim sum As Integer = dt.AsEnumerable().Sum(Function(row) row.Field(Of Integer)("Salary"))

دستور LINQ برای محاسبه چند سطر خاص :

#C :


int sum = dt.AsEnumerable().Where(row => row.Field<int>("EmployeeId") > 2).Sum(row => row.Field<int>("Salary"));

VB.Net :


Dim sum As Integer = dt.AsEnumerable().Where(Function(row) row.Field(Of Integer)("EmployeeId") > 2).Sum(Function(row) row.Field(Of Integer)("Salary"))