PDA

View Full Version : سوال: معادل در LINQ



scorpion_man
یک شنبه 29 اسفند 1389, 12:08 عصر
سلام به همه دوستان
تو LINQ اگر بخواهیم یک جدول و بر اساس یک جدول دیگه GROUP کنیم به شرطی که به عناصر جدول اولی دسترسی داشته باشیم باید چیکار کرد؟
مثلا یم object بنام product و جدول دیگه بنام Order و یک جدول ارتباطی بنام OrderProduct داریم میخواهیم جدول Product رو با جدول Order دسته بندی کنیم و در خروجی یک Object Dictionary به صورت Dictionary<int,list<product>)d داشته باشیم من همچین کدی نوشتم ولی خروجی دلخواهمو نمیدونم چطوری بگیرم



from psa in context.Product
join sao in context.ProductOrder on psa.ProductId equals sao.ProductId
join sa in context.Order on sao.OrderId equals sa.OrderId
group psa by new { sa.Type} into g
select g);

خروجی g از نوع IGrouping هست که لیستی از Product های گروه شده رو بر میگردونه
با تشکر از کمکتون

scorpion_man
دوشنبه 01 فروردین 1390, 09:14 صبح
خوب با تشکر از همه دوستان
من راه حلی که رسیدم استفاده از یک حلقه froeach هست تا بتونیم نوع داده رو از IGroupin به یک آبجکت Dictionary تغییر داد اما خود کتابخانه Linq یک متد بنام ToDictionary هم داره که میشه از این هم استفده کرد
اما در مورد query هم همون Query پست بالایی درست هست ولی زمانی که میخواهید از foreach استفاده کنید مقدار query یک خاصیت بنام Key داره که داخل این خاصیت مقادیری که در قسمت new سوال Groub by هست در دسترس می باشه و هر هر آبجکت از IGrouping هم لیستی از ااشیائ رو در خودش داره که میشه با متد ToList به لیستی از نوع مشخص شده درآورد.