#linq #ienumerable
#linq #ienumerable
Вопрос:
моя проблема с чтением foreach при запросе и создании двухуровневых отношений, подобных этому:
Лямбда:
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
}
}
и результат :
http://i.stack.imgur.com/dll0l.jpg
Теперь: я не знаю, как это использовать, как читать с помощью Foreach?
Я хочу читать так:
var ds = OurServiceService.GetMasterDetailsFilterLang(_LangSar);
foreach (var d in ds)
{
//Read Master example : d.Id,d.Title
//do something
foreach (var details in d)
{
//Read Details example : details.Id,details.Name
//do something
}
}
foreach (подробности о переменной в d.OurService) <— не отображается .Наш сервис
это моя проблема :
http://i.stack.imgur.com/CQOtJ.jpg
я хочу показать результат в html-коде, подобном этому (с помощью StringBuilder):
<ul class="container">
<li class="col-md-2">
<h4>Master.Title(1)</h4>
<ul>
<li><a href="index.html">Details.Title(1)</a></li>
<li><a href="index-footer-v2.html">Details.Title(2)</a></li>
<li><a href="index-footer-v3.html">Details.Title(3)</a></li>
</ul>
</li>
<li class="col-md-2">
<h4>Master.Title(2)</h4>
<ul>
<li><a href="elements.html">Details.Title(1)</a></li>
<li><a href="typography.html">Details.Title(2)</a></li>
</ul>
</li>
</ul>
</ul>
Ответ №1:
Вы имеете в виду что-то подобное? :
var ds = 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
}
};
foreach (var d in ds)
{
//here you can access d.CatId amp; d.CatName
foreach (var details in d.OurServices)
{
//here you can access details.ServId amp; details.ServName
}
}
Комментарии:
1. В чем вопрос? Вы хотите получить тот же результат, что и при захвате экрана, но используя 2 level
foreach
вместо LINQ, как вы уже делали?2. Редактировать сообщение с полным кодом