Join در Linq به زبان سی شارپ

این مقاله به توضیح join با استفاده از LINQ در C# می پردازد.

در این مقاله درباره Group Join می نویسیم.

Group Join – ساختار سلسله مراتبی داده ها را تولید می کند. هر موردی از مجموعه اول با یک مجموعه ای از موردهای وابسته از مجموعه دوم جفت می شوند.
هر زمان که ما Group Join با متد بسطی (Extension method) را انتخاب کنیم، نحوه استفاده از آن متد بسطی GroupJoin() می باشد.
ویژوال استودیو را باز کرده و یک پروژه Console Application ایجاد می کنیم.
دو کلاس با نام های Department.cs و Employee.cs اضافه می کنیم.
در کلاس Department.cs کد زیر را وارد می کنیم:

 

۶. این کلاس دو property با نام های DeptId و DeptName دارد و یک متد استاتیک GetAllDepartments() وجود دارد که لیستی از اشیای Department برمی گرداند. این کلاس سه دپارتمان دارد که IT، Accounting و HR هستند.

۷. کد نوشته شده در کلاس Employee نیز به ترتیب زیر است:

 

۸. کلاس Employee شامل سه property است که Id، Name و DepartmanId هستند. در اینجا، DepartmanId کلید Join است. اگر ما بخواهیم بررسی کنیم که کارمندی متعلق به کدام دپارتمان است، property مربوطه یعنی DepartmentId را از کلاس Employee گرفته و آن را با property مربوطه در کلاس Departman یعنی DepId مطابقت می دهیم.

join در Linq

۹. از این رو، در این دو کلاس DepartmanId از کلاس Employee و DeptId از کلاس Department کلیدهای Join هستند. همچنین در کلاس Employee یک متد با نام GetAllEmployeeByDepartment() وجود دارد که لیستی از اشیای Employee برمی گرداند.

۱۰. حالا ما در حال بازیابی کارمندان از طریق دپارتمان با استفاده از Group Join، و چاپ نام دپارتمان و نام کارمند متعلق به آن دپارتمان هستیم.

۱۱. متد GetAllDepartments لیستی از اشیای Department به ما خواهد داد. می خواهیم لیستی از Department را با لیستی از Employee، Group Join بزنیم، بنابراین از متد بسطی Group Join() استفاده می کنیم.

کد زیر را در Main class می نویسیم:

 

۱۲. Group Join چهار پارامتر دارد، که پارامتر اول داخلی است و نوع آن IEnumerable<TInner> است.

۱۳. در این مثال، می خواهیم Employee و Department را جوین کنیم. لیستی از Departments داریم، بنابراین دنباله لیستی از کارمندان می باشد. لیست Department دنباله خارجی است که با دنباله داخلی یعنی Employee جوین گروهی (group join) شده است.

۱۴. پارامتر دوم outerKeySelector است که property مربوط به کلید جوین است. در اینجا، ما کلید جوین را برای دنباله خارجی فراهم می کنیم که Department است. بنابراین، ما DeptId را به عنوان پارامتر دوم ارسال کرده ایم و پارامتر بعدی innerKeySelector است. در اینجا کلید جوین برای دنباله داخلی را فراهم می کنیم که Employee است. DepartmentId از کلاس Employee به عنوان پارامتر سوم ارسال می شود. پارامتر آخر resultSelector است که مشخص می کند ما چه چیزی را به عنوان نتیجه Group Join می خواهیم. ما لیستی ار Department و Employee نیاز داریم.

۱۵. درنهایت، لیستی از Employee همراه با Department آن ها را در متغیر employeebydept خواهیم داشت و می توانیم با حلقه foreach آن را چاپ نماییم.

 

کد بالا نمونه چاپ کارمندان مربوط به یک بخش است.

Join در Linq به زبان سی شارپ
۵ (۱۰۰%) ۲ رایs

(434 نوشته)

C# Programmer , Web Design And Developer , MVC , ASP.NET

فکر شما چیست؟

آدرس ایمیل شما منتشر نخواهد شد. بخشهای موردنیاز علامتگذاری شدهاند *

حاصل جمع اعداد را وارد کنید : *