PDA

View Full Version : سوال: نحوه استفاده از Linq Query به صورت Master Details با استفاده از Foreach



پوریا منفرد
چهارشنبه 28 خرداد 1393, 11:47 صبح
سلام اساتید محترم

بنده یه کوئری با Linq ایجاد کردم که از جدول Category -- Id,catName و از جدول فرزند به صورت Enumerable یه Select دیگه زدم تا زیر دسته ها هم لیست شن در کل به صورت زیر هست :

به صورت Lambda

public IList GetMasterDetailsFilterLang(string language)
{
var query = (_ourServiceCategories
.Where(c => (c.Language == "fa-IR"))
.Select(
c =>
new
{
CatId = c.Id,
CatName = c.Title,
OurServices = c.OurServices
.Select(
o =>
new
{
ServId = o.Id,
ServName = o.Title
}
)
}
)).ToList();

return query;
}


به صورت Linq :

from c in OurServiceCategories
where c.Language == "fa-IR"
select new
{
CatId = c.Id,
CatName = c.Title,
OurServices = from o in c.CategoryOurServices
select new
{
ServId = o.Id,
ServName = o.Title
}
}

و نتیجه کوئری:

120280

حالا می خوام این Result رو به وسیله Foreach به صورت زیر بخونم اما به جزییاتش دسترسی ندارم


foreach (var d in ds)
{
//Read Master example : d.Id,d.Title
foreach (var details in d)
{
//Read Details example : details.Id,details.Name
}

}


البته : شکی که دارم اینه که نباید به صورت Ilist دریافت بشه
ممنون میشم راهنمایی کنید.

Mahmoud.Afrad
پنج شنبه 29 خرداد 1393, 16:54 عصر
نوع برگشتی باید از نوع entity باشه که سلکت میکنی. IList<OurServiceCategories>
در ضمن چون از طریق هر entity میتونی به CategoryOurService دسترسی داشته باشی به نظرم نیازی به این همه کد نیست چون در موقع لزوم اطلاعات واکشی میشه:

public IEnumerable<OurServiceCategories> GetMasterDetailsFilterLang(string language)
{
var query = _ourServiceCategories
.Where(c => (c.Language == "fa-IR");

return query;
}



foreach (var d in ds)
{
//Read Master example : d.Id,d.Title
foreach (var details in d.CategoryOurServices)
{
//Read Details example : details.Id,details.Name
}
}