2016-01-31 2 views
1

Моя проблема заключается в том, что я не смог отфильтровать подписок на основе ID моего другого основного списка. У меня есть 2 списка, List<main> и List<sub> Список sub содержит id основного.Как получить список <> на основе идентификатора другого списка <> C# MVC 4

До сих пор я сделал

@foreach (var main in Model.main_lst) 
{ 
    var FilterdList = Model.sub_lst.Where(
     x => Model.main_lst.Any(y => y.id == main.id)) 
    <table> 
     @foreach (var sub in FilterdList) 
     { 
      <tr> 
       <td>@Html.DisplayFor(modelItem => sub.Name)</td> 
      </tr> 
     } 
    </table> 
} 

Пожалуйста, помогите мне

ответ

0

Здесь вы идете,

var FilterdList = Model.sub_ls 
         .Where(x => Model.main_lst.Any(y => y.id == x.id)).ToList(); 

Даст вам общие элементы как в списке.

+1

В этом вопросе задан общий список. Это не так. Для этого потребуется вызов '.ToList()' в конце. Если общий список не нужен, то код будет в порядке, как есть. – mason

+0

+1, я второй, спасибо :) Требование OP, похоже, не требует общего списка. –

+2

Название гласит: «Как получить List <> на основе идентификатора другого списка <> C# MVC 4', однако, если вы посмотрите на код, это не обязательно. Это просто то, на что я верю, что вы должны обратиться в свой ответ. Простое предложение, в котором говорилось: «хотя вы попросили список в своем вопросе, это необязательно, поскольку любой IEnumerable должен быть достаточным», было бы хорошим объяснением. – mason

0

Я думаю, что вы ищете может быть достигнуто путем

var FilterdList = Model.sub_lst.Where(x => x.id==main.id); 

Это даст вам список записей из списка суб, которые имеют тот же идентификатор, что и ваш главный из внешнего контура.

+0

В вопросе задан общий список в качестве результата. Это не так. Для этого потребуется вызов '.ToList()' в конце. Если общий список не нужен, то код будет в порядке, как есть. – mason

Смежные вопросы