PDA

View Full Version : مبتدی: جمع یک عدد در Linq



HAMRAHSOFT.IR
جمعه 18 فروردین 1391, 10:25 صبح
سلام دوستان در این کد چطوری متونم sum فیلد Bedehkar را حساب کنم و در مسیج باکس نمایش بدم

var q = from h in tblhsab.Tbl_hsabs
join p in tblhsab.Tbl_Persons on h.PerNo equals p.PerNo
where h.IDAUTO == int.Parse(code1)
select new { name = p.Nam + " " + p.Famil, h.PerNo, h.date1,h.Bedehkar, h.Comment };

ممنون از لطف شما دوستان که راهنمای مکنید

omidamiry
جمعه 18 فروردین 1391, 12:23 عصر
توضیح بشتر بده با چه زبان و در چه رویدادی

HAMRAHSOFT.IR
جمعه 18 فروردین 1391, 20:02 عصر
زبان برنامه نوسی سی شارپ تکنلوژی Linq

C#.net
جمعه 18 فروردین 1391, 21:12 عصر
decimal sum = q.Sum(p => p.Bedehkar);

HAMRAHSOFT.IR
جمعه 18 فروردین 1391, 22:24 عصر
تشکر ولی این خطارا میده

Error 1 Cannot implicitly convert type 'int?' to 'decimal'. An explicit conversion exists (are you missing a cast?) F:\gharzolhasane\gharzolhasane\frm_sabt\frm_newvar iz.cs 111 31 HamrahSoft

C#.net
شنبه 19 فروردین 1391, 11:46 صبح
تشکر ولی این خطارا میده

Error 1 Cannot implicitly convert type 'int?' to 'decimal'. An explicit conversion exists (are you missing a cast?) F:\gharzolhasane\gharzolhasane\frm_sabt\frm_newvar iz.cs 111 31 HamrahSoft


اگه به جای decimal بنویسید ?decimal درست می شه
اینطور هم میشه نوشت:


int? sum = q.Sum(p => p.Bedehkar);
long? sum = q.Sum(p => p.Bedehkar);
decimal? sum = q.Sum(p => p.Bedehkar);


اون علامت سوال اجازه می ده value type ها مقدار null هم بتونن بگیرن.

فرید نجفلو
شنبه 19 فروردین 1391, 23:24 عصر
double? sm = (from b in q select b.Bedehkar).Sum();

HAMRAHSOFT.IR
یک شنبه 20 فروردین 1391, 00:31 صبح
ممنون از اینکه جوابم دادید
حلا اگه بخوایم دو عدد از حم کم کنم یعنی دو ستون از هم کم کنم باید چکار کنیم
var q = from h in tblhsab.Tbl_hsabs
join p in tblhsab.Tbl_Persons on h.PerNo equals p.PerNo
where h.IDAUTO == int.Parse(code1)
select new { name = p.Nam + " " + p.Famil, h.PerNo, h.date1,h.Bedehkar,h.Bestankar, h.Comment };
یعنی Bestankar از Bedehkar کم بشه
البته جمع Bestankar از Bedehkar باید کم بشه

فرید نجفلو
یک شنبه 20 فروردین 1391, 10:30 صبح
سلام
دوست عزیز اون قسمتی رو هم که مشخص کردم باید تو برنامه به صورت عمومی تعریف کنید تا برای هر تکه کد دوباره نویسی نشه
// must declare as public to prevent redeclare for each sub
//------------------------------------------------------------------------------------------
string ConnStr = @"Data Source=.\SQLEXPRESS;Initial Catalog=test;Integrated Security=True";
DataClasses1DataContext dc =new DataClasses1DataContext(ConnStr);
//------------------------------------------------------------------------------------------
string code1 = "85";
//Master Query
var q = from h in dc.Tbl_hsabs
join p in dc.Tbl_Persons on h.PerNo equals p.PerNo
where h.IDAUTO == int.Parse(code1)
select new { name = p.Nam + " " + p.Famil, h.PerNo, h.date1, h.Bedehkar , h.Bestankar, h.Comment };

//sum of an element in master query
double? sm = q.Sum(p => p.Bedehkar);
double? sm2 = (from h in q select h.Bedehkar).Sum();
//max of an element in master query
double? mx = q.Max(p => p.Bedehkar);
double? mx2 = (from h in q select h.Bedehkar).Max();
//use 2 element in master query
double? mande = q.Sum(p => (p.Bedehkar - p.Bestankar));
double? mande2 = (from h in q select (h.Bedehkar - h.Bestankar)).Sum();