در این مطلب بوسیله متد یا عبارت GroupBy و به کمک تابع های تجمیعی در LINQ می خواهیم چگونگی گروه بندی داده ها در LINQ را آموزش دهیم. در زبان SQL از عبارت GROUP BY به همراه تابع های تجمیعی برای گروه بندی داده ها استفاده می شود. پیوند زیر چگونگی گروه بندی داده ها را آموزش داده است.

گروه بندی داده ها با GROUP BY

در کدهای زیر به دو شیوه Query Syntax و Method Syntax داده ها بر اساس خصوصیت Age گروه بندی می شوند و خروجی هر دو متغیری به نام ageGroup ذخیره شده است. درهر دو شکل می بینید که از دو حلقه foreach استفاده شده است. در حلقه foreach اولی تکرار بر روی متغیر ageGroup است و درون foreach اولی و در هر گام خصوصیت Key را توسط متد ()WriteLine نشان می دهیم. توجه کنید که داده ها بر اساس سن (Age) گروه بندی شده اند.

پس مطابق شکل خروجی زیر، خصوصیت Key به هر کدام از سن ها اشاره دارد. حال برای نمایش داده های گروه یا هر Key از حلقه foreach دوم استفاده می کنیم به طوری که باید یک متغیر از نوع User یا همان کلاس موجودیت ایجاد کنیم تا به خصوصیت های هر سطر دسترسی پیدا کنیم. همانطور که در شکل زیر می بینید گروه سن های ۳۵ سال دارای سه کار (سطر یا عضو) است.

در کدهای زیر می خواهیم تعداد هر عضو کلید را بوسیله متد ()Count پیدا کنیم. به عبارت دیگر می خواهیم بدانیم به ازای هر نام چه تعداد کاربر وجود دارد. مثال دیگری که می توانیم بگویم، تعداد کارمندان هر شهر را پیدا کنیم. در این حالت گروه بندی بر اساس نام شهر خواهد بود. توجه کنید در کدهای زیر از عبارت Into استفاده شده است سپس از متغیر gn درون عبارت Select و با استفاده از عبارت new دو متغیر n و c ایجاد شده است. n مقدار کلید که در اینجا برابر با خصوصیت FirstName و c تعداد هر سطر به ازای یک نام را نشان می دهد. سپس این دو مقدار را درون متد ()WriteLine نشان داده ایم.

در خروجی بالا می بینید که نام Amir دو بار تکرار شده است. در کد شکل و خروجی زیر کوئری ایجاد شده بوسیله عبارت groupby into را نشان می دهیم.

دانلود سورس های مطلب Entity Framework GroupBy LINQ