جمع کردن مقادیر یک ستون خاص در DataTable
فرض کنید در کد نویسی یک Datatable به صورت زیر تعریف می کنیم و 3 سطر را به آن اضافه می کنیم :
DataTable DataTable1 = new DataTable(); DataTable1.Columns.AddRange(new DataColumn[3] { new DataColumn("EmployeeId", typeof(int)), new DataColumn("Name" , typeof(string)), new DataColumn("Salary" , typeof(int)) }); DataTable1.Rows.Add(1, "John Hammond" , 45000); DataTable1.Rows.Add(2, "Mudassar Khan" , 32000); DataTable1.Rows.Add(3, "Robert Schidner" , 19000);
همانطور که در کد بالا مشاهده می کنید ابتدا یک شی Datatable ایجاد می کنیم . سپس با استفاده از متد ()AddRange خاصیت Columns تعداد 3 ستون که دارای مشخصات زیر هستند را به ان اضافه می کنید :
- ستون اول دارای نام EmployeeId هست و از نوع int
- ستون دوم دارای نام Name و از نوع string هست
- و در اخر ستون سوم که دارای نام Salary و نوع int هست .
هم سه سطر را با استفاده از متد ()Add خاصیت Rows به ان اضافه می کنیم . دقت کنید که این Datatable را شبیه سازی کرده ایم . زیرا در برنامه های واقعی ممکن است که شما جدولی در بانک داشته باشید که دارای این ستون های باشد . زمانی که با استفاده از dataadapter داده ها را از بانک واکشی می کنید #C به صورت خودکار این ساختار را برای شما ایجاد می کند . کلاس DataTable یک متد به نام ()Compute دارد که دارای 2 پارامتر می باشد :
- در پارامتر اول آن توابع تجمیعی مانند ()SUM() ، Count() ، MIN() ، Max() ، AVG ( میانگین ) قرار می گیرد .
- در پارامتر دوم می توانید داده ها را فیلتر نمایید ( مانند دستور WHERE در SQL ) .
حال قصد داریم با استفاده از پارامتر اول مجموع ستون Salary ، Datatable ای که در قبل ساخته ایم را بدست آوریم :
int sum = Convert.ToInt32(DataTable1.Compute("SUM(Salary)", string.Empty));
در پارامتر اول مقدار (SUM(Salary را قرار داده ایم . این مقدار مشخص می کند که قصد داریم جمع مقادیر ستون Salary را بدست آوریم . چونکه نیازی به فیلتر کردن داده ها نداریم در پارامتر دوم مقدار string.Empty را قرار داده ایم . بدلیل اینکه قصد داریم نتیجه را در یک متغیر از نوع int قرار دهیم باید با استفاده از متد ToInt32 کلاس Convert نتیجه رو به نوع int تبدیل کنیم .
اگر قصد داشته باشید که جمع حقوق ( Salary ) کارمندانی که شناسه آنها ( EmployeeId ) از 2 بزرگتر است را بدست بیاورید می تونید از دستور زیر استفاده کنید :
int sum = Convert.ToInt32(DataTable1.Compute("SUM(Salary)", "EmployeeId > 2"));
دست خوش
سلام و خسته نباشید و ممنون از مطالب مفیدی که توی سایتتون قرار میدین.پروژه من بصورتیه که ابتدا باید یک مقدار دلخواه رو در Textbox وارد کنم و بعد از زدن دکمه ثبت اون مقدار با مقدار قبلی که با شناسه اون شخص ثبت شده جمع بشه.ممنون میشم راهنمایی کنین
سلام، مرسی
ممنون میشم سوالتونو تو بخش پرسش و پاسخ مطرح بفرمایید