我的Generic Repository类中有一个方法,如下所示:
public List<T> GetPagedData(int startindex, int pagesize, string sorting, Func<T, T> selector = null)
{
IQueryable<T> pageddata = dbset;
pageddata = pageddata.OrderBy(sorting).Skip(startindex).Take(pagesize);
if (selector != null)
pageddata = pageddata.Select(selector).AsQueryable();
return pageddata.ToList();
}
我希望能够从此方法返回动态/匿名类型列表。我尝试Func<T, dynamic>
和Expression<Func<T, dynamic>>
并在这里和那里进行投射但是我总是遇到异常,即使它编译也是如此。请注意,我打算将其用作基于约定的,并且所有列名称都匹配。
我知道这可能看起来有点像,但任何帮助表示赞赏。如果我错了也请告诉我。
答案 0 :(得分:0)
使用var
public List<T> GetPagedData(int startindex, int pagesize, string sorting, Func<T, T>
selector = null)
{
var pageddata = dbset.OrderBy(sorting).Skip(startindex).Take(pagesize);
if (selector != null)
pageddata = pageddata.Select(selector).AsQueryable();
return pageddata.ToList();
}
答案 1 :(得分:0)
你可以使用2个Generics
public List<Q> GetPagedData<T, Q>(int startindex, int pagesize, string sorting, Func<T, Q> selector = null)
{
dynamic pageddata = dbset;
pageddata = pageddata.OrderBy(sorting).Skip(startindex).Take(pagesize);
return pageddata.Select(selector).ToList();
}
没有选择器,这是不可能的。最小选择器将T的输入参数转换为Q.(除了T和Q是相同类型或Q扩展T,然后标识函数是最小选择器)