ASP.NET MVC 4 Efficiency issue at showing records
<p>When the Equipo/Index page is requested, it takes between 6-10 seconds to load. I think I might be having an efficiency problem.</p>

<p>Equipo Controller:</p>

<pre><code>public class EquipoController : Controller
{
    private ServicioEquipo servicio = new ServicioEquipo();

    [HttpGet]
    public ActionResult Index(string search, int page = 1)
    {
        if (search!= null)
            page = 1;

        ViewBag.CurrentFilter = search;

        // Get all "Equipo" records
        IEnumerable&lt;Equipo&gt; equipos = servicio.ObtenerTodos();

        if (!String.IsNullOrEmpty(search))
        {
            equipos = equipos.Where(s =&gt; s.identificador.Contains(search));
        }

        var pageSize = 20;
        IEnumerable&lt;EquipoViewModel&gt; viewModelEquipos = Mapper.Map&lt;IEnumerable&lt;Equipo&gt;, IEnumerable&lt;EquipoViewModel&gt;&gt;(equipos);

        // Show 20 "Equipo" only
        IPagedList&lt;EquipoViewModel&gt; model = viewModelEquipos.ToPagedList(page,pageSize);

        return View(model); 
    }
}
</code></pre>

<p>ServicioEquipo:</p>

<pre><code>public class ServicioEquipo
{
    private RepositorioEquipo repositorio = new RepositorioEquipo();

    public IEnumerable&lt;Equipo&gt; ObtenerTodos()
    {
        return repositorio.ObtenerTodos().ToList();
    }
}
</code></pre>

<p>RepositorioEquipo "ObtenerTodos" method:</p>

<pre><code> public IEnumerable&lt;Equipo&gt; ObtenerTodos()
 {
      return base.DBContext.Equipoes.Include(e =&gt; e.Cuenta).Include(e =&gt; e.EquipoTipo);
 }
</code></pre>

<p>Equipo View:</p>

<pre><code>@model IPagedList&lt;Web.Models.EquipoViewModel&gt;

@{
    ViewBag.Title = "Equipos";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
@using PagedList.Mvc;
@using PagedList;

...

@foreach (var item in Model)
{
    &lt;tr&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.idEquipo&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.identificador)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.nroSerie)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.primario)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.EquipoTipo.descripcion)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.cadencia)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.versionFirmware)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.versionProgramacion)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.estadoSd)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.Cuenta.nombre)&lt;/td&gt;
        &lt;td class="text-center"&gt;@Html.DisplayFor(modelItem =&gt; item.portable)&lt;/td&gt;
        &lt;td class="text-center"&gt;
            &lt;a href="@Url.Action("Details", new { id = item.idEquipo })" class="btn btn-info"&gt;
                &lt;span class="glyphicon glyphicon-search" aria-hidden="true"&gt;&lt;/span&gt;
            &lt;/a&gt;
            &lt;a href="@Url.Action("Edit", new { id = item.idEquipo })" class="btn btn-warning"&gt;
                &lt;span class="glyphicon glyphicon-edit" aria-hidden="true"&gt;&lt;/span&gt;
            &lt;/a&gt;
            &lt;a href="@Url.Action("Delete", new { id = item.idEquipo })" class="btn btn-danger"&gt;
                &lt;span class="glyphicon glyphicon-remove" aria-hidden="true"&gt;&lt;/span&gt;
            &lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
}

...
</code></pre>

<p>I think that using the ToList() method might be causing this efficiency problem.</p>

<p>Any ideas ?</p>