PDA

View Full Version : دستورات Distinct و sum در Linq



alibabaei2
پنج شنبه 26 اردیبهشت 1392, 20:51 عصر
سلام
دو تا جدول به شرح زیر دارم
Products(ProductID,ProductName)
Ordera(OrderID,ProductID,Amount,OrderDate)
حالا می خوام این دو تا جدول با استفاده از linq با هم join بشه و فیلد های گرید به این صورت باشه یک فیلد نام محصول رو بنویسه و فیلد دوم جمع مقادیری (Amount ) هایی از اون ماده که سفارش داده شده است
var m=(from p in DataContext.Context.Products
join o in DataContext.Context.Orders
on p.ProductID equals o.ProductID
select new
{
ProductName=p.ProductName,
TotalAmount = (from pp in DataContext.Context.Products
join oo in DataContext.Context.Orders
on pp.ProductID equals oo.ProductID).Sum()
}).Distinct();

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

tooraj_azizi_1035
جمعه 27 اردیبهشت 1392, 13:03 عصر
from p in DataContext.Context.Products
join o in DataContext.Context.Orders
on p.ProductID equals o.ProductID
group p by new { p.ProductName, o.Amount} into g
select { ProductName=g.ProductName, Amount=g.Sum(a => a.Amount)};

alibabaei2
جمعه 27 اردیبهشت 1392, 17:47 عصر
در این کدی که دادید درون select به مقادیری مثل ProductName که بعد از g می زنم ایراد میگیره

tooraj_azizi_1035
شنبه 28 اردیبهشت 1392, 12:53 عصر
from p in DataContext.Context.Products
join o in DataContext.Context.Orders
on p.ProductID equals o.ProductID
group p by p.ProductName into g
select { ProductName=g.Key, Amount=g.Sum(a => a.Amount)};

alibabaei2
شنبه 28 اردیبهشت 1392, 16:45 عصر
حالا مقدار Amount در a.Amount رو نمیشناسه

alibabaei2
یک شنبه 29 اردیبهشت 1392, 20:23 عصر
از اونجایی که مقدار Amount در جدول orders بود باید به جای کد زیر
group p by p.ProductName into g
select { ProductName=g.Key, Amount=g.Sum(a => a.Amount)};


می نوشتیم

group o by p.ProductName into g
select { ProductName=g.Key, Amount=g.Sum(a => a.Amount)};