как читать в foreach linq двухуровневый запрос en

#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. Редактировать сообщение с полным кодом