PDA

View Full Version : Query ها ی ترکیبی از Entity Frame Work



Unknownlive
جمعه 11 شهریور 1390, 23:17 عصر
درود بر همه !

من می خواستم در Entity با Linq کوئری های ترکیبی بگیرم ! راهی که هست و داشتم این بود که یک لیست نوشته بشه و با ILIST و Type یک List نوشته شده بر پایه مدل مقدار را بریزم اما می خواستم ببینم خود Entity راهی رو داره ! مثلا فکر کنید یک جدول کشور دارید یک جدول استان در جدول استان ، ID جدول کشور کلید خارجی هست حالا می خواهید یک Query بگیرید از جدول استان که نام استان و نام کشور را برگرداند حالا چطوری می توان آن را برگرداند ؟! جز روش Ilist که میاییم یک لیست از سطر های که از هر دو جدول می خوایم رو میایم میگیریم و لیست می کنیم و مقدار را در انها بر می گردانیم روشی پیاده سازی شده با خود Entity هست ؟! که کارو راحت تر بکنه ؟! :متفکر:

Unknownlive
شنبه 12 شهریور 1390, 15:10 عصر
با عرض خسته نباشین به خودم :لبخند: پیداش کردم :کف: خوب از نوع Ienumarable یا Iquarable باید استفاده بشه یک سری خصوصیت ها و مزیت های داره هر کسی نیاز داشت بگه کامل تشریح کنم الان حسش نیست :افسرده: ولی اخرش از همون روش یک کلاس ترکیبی رفتم بنا به دلایل بازدهی :متفکر:

mehdi.mousavi
یک شنبه 13 شهریور 1390, 11:09 صبح
درود بر همه ! مثلا فکر کنید یک جدول کشور دارید یک جدول استان در جدول استان ، ID جدول کشور کلید خارجی هست حالا می خواهید یک Query بگیرید از جدول استان که نام استان و نام کشور را برگرداند حالا چطوری می توان آن را برگرداند ؟!


سلام.
برای اینکار می تونید از Join ها استفاده کنید:

context
.Countries
.Join(
context.Cities,
c => c.Id,
ct => ct.CountryId,
(c, ct) => new
{
CityName = ct.Name,
CountryName = c.Name
});

موفق باشید.

Unknownlive
دوشنبه 14 شهریور 1390, 15:41 عصر
ممنون عزیز اما خوب نوع خروجی تو چه جدولی میره ؟ واگه بخوایی اون رو با یک متد برگردونی باید چه نوع خروجی باشه ؟ جز IEnurable , Iqueryable
سلام.
برای اینکار می تونید از Join ها استفاده کنید:

context
.Countries
.Join(
context.Cities,
c => c.Id,
ct => ct.CountryId,
(c, ct) => new
{
CityName = ct.Name,
CountryName = c.Name
});

موفق باشید.

mehdi.mousavi
دوشنبه 14 شهریور 1390, 16:34 عصر
ممنون عزیز اما خوب نوع خروجی تو چه جدولی میره ؟ واگه بخوایی اون رو با یک متد برگردونی باید چه نوع خروجی باشه ؟ جز IEnurable , Iqueryable

سلام.
از اونجاییکه داریم یک Anonymous Type رو Select می کنیم، نمی تونیم یک var رو در خروجی برگردونیم. بنابراین باید ابتدا کلاسی تعریف کنیم تا مقادیر مورد نظر رو بتونیم در اون بریزیم:


public class MyProjectedItem
{
public string CityName {get; set;}
public string CountryName {get; set;}
}


سپس، بدین شکل عمل کنیم:

List<MyProjectedItem> items = context
.Countries
.Join(
context.Cities,
c => c.Id,
ct => ct.CountryId,
(c, ct) => new MyProjectedItem()
{
CityName = ct.Name,
CountryName = c.Name
}).ToList();

return items;

موفق باشید.

spicirmkh
چهارشنبه 05 بهمن 1390, 11:04 صبح
سلام
امکان دارد یک مثال ساده بزنید و نحوه استفاده از آن
با تشکر

با عرض خسته نباشین به خودم :لبخند: پیداش کردم :کف: خوب از نوع Ienumarable یا Iquarable باید استفاده بشه یک سری خصوصیت ها و مزیت های داره هر کسی نیاز داشت بگه کامل تشریح کنم الان حسش نیست :افسرده: ولی اخرش از همون روش یک کلاس ترکیبی رفتم بنا به دلایل بازدهی :متفکر: