1
我们一直在与各种版本的PagedList,但是这些pagedlists不友善。他们不序列化。有没有人有一个很好的方式来获取跨Wcf的分页数据? (包括诸如数据源的TotalRecords之类的属性。)Wcf友好的PagedList
我们一直在与各种版本的PagedList,但是这些pagedlists不友善。他们不序列化。有没有人有一个很好的方式来获取跨Wcf的分页数据? (包括诸如数据源的TotalRecords之类的属性。)Wcf友好的PagedList
我们制定了一个解决方案,将当前的PagedList简化为更可序列化并更适合我们解决方案的东西。我们创建了一个包含列表/集合的类,而不是创建自定义List/Collection。
以前,我们在客户端反序列化时丢失了pagedlist的自定义属性。它仍然包含列表中的所有项目,但它缺少属性。
这是基于特洛伊古德的代码,我相信它是基于一些未发布的Microsoft MVC代码。更多信息可以在这里找到:http://www.squaredroot.com/2009/06/15/return-of-the-pagedlist/
public class PagedList<T> : IPagedList<T>
{
public PagedList()
{
}
public PagedList(IEnumerable<T> source, int pageIndex, int pageSize)
: this(source == null ? new List<T>().AsQueryable() : source.AsQueryable(), pageIndex, pageSize)
{
}
private PagedList(IQueryable<T> source, int pageIndex, int pageSize)
{
TotalRecords = source.Count();
// add items to internal list
if (TotalRecords > 0)
if (pageIndex == 0)
Data = source.Take(pageSize).ToList();
else
Data = source.Skip((pageIndex) * pageSize).Take(pageSize).ToList();
}
public int TotalRecords { get; set; }
public IEnumerable<T> Data { get; set; }
}
,然后通过下面的扩展的实际执行:
public static PagedList<T> ToPagedList<T>(this IEnumerable<T> source, int pageIndex, int pageSize)
{
return new PagedList<T>(source, pageIndex, pageSize);
}
我一直在试图使用的代码在你的解决方案,从序列化IPagedList结果我客户端上的WCF服务,但没有成功,你能帮我解决吗?我不确定它是否适合我创建一个新问题来深入解释问题。 – 2013-02-06 09:04:19