1

我有以下操作方法:-

public ActionResult Index(string searchTerm=null, int page = 1)
{
            var racks = repository.AllFindRacks(searchTerm).OrderBy(a=>a.Technology.Tag).ToPagedList(page, 5) ;

            if (Request.IsAjaxRequest())
            {

                return PartialView("_RackTable", racks);
            }
            return View(racks);
}

它调用以下存储库方法:-

public RackJoinList AllFindRacks(string q)
{
            RackJoinList rjlist = new RackJoinList();
            var racks = from rack in tms.TMSRacks.Where(a => a.Technology.Tag.ToUpper().StartsWith(q.ToUpper()) || (q == null))

                  select rack;

            rjlist.Racks = racks.ToList();
            var resources = from resource in entities.Resources
                            join c in rjlist.Racks
                            on resource.RESOURCEID equals c.Technology.IT360ID
                            select resource;
            rjlist.Resources = resources;

            return rjlist;
}

并且RackJoinList视图模型是:-

public class RackJoinList
{
        public IEnumerable<TMSRack> Racks { get; set; }
        public IEnumerable<Resource> Resources { get; set; }
}

但是由于存储库方法返回单个对象,我无法对其应用 orderby 和分页。任何人都可以就如何解决这个问题提出建议吗?

4

1 回答 1

1

只是在黑暗中拍摄,但这又如何:

RackJoinList list = repository.AllFindRacks(searchTerm);
list.Racks = list.Racks.OrderBy(a=>a.Technology.Tag).ToPagedList(page, 5);

AllFindRacks 返回一个对象,但该对象中有两个 IEnumerable 集合,即 Racks 和 Resources。我假设你想在这里调用机架上的 OrderBy。

编辑说明:

我所做的是这个;

存储 RackJoinList 对象,因为稍后将发送到其他地方。

更改 RackJoinList 对象的 Racks 集合。

发送带有更改后的 Racks 集合的 RackJoinList 对象。

警告: 我不确定 ToPagedList 是如何工作的。上面有文档吗?我尝试谷歌无济于事。

编辑#2:

以下是我将如何根据 PagedList 的来源对其进行重组。这里需要注意的是我无法编译它,所以我不知道是否PagedList<TMSRack>是正确的类型。让这被称为使用编写文档var很烦人的情况!

public ActionResult Index(string searchTerm=null, int page = 1)
{
    RackJoinList list = repository.AllFindRacks(searchTerm);
    list.PagedRacks = list.Racks.OrderBy(a=>a.Technology.Tag).ToPagedList(page, 5);

    if (Request.IsAjaxRequest())
    {
        return PartialView("_RackTable", racks);
    }

    return View(list);
}

public class RackJoinList
{
    public IEnumerable<TMSRack> Racks { get; set; }
    public IEnumerable<Resource> Resources { get; set; }
    public PagedList<TMSRack> PagedRacks { get; set; }
}
于 2013-08-09T13:44:13.267 回答