我已经在我的项目中实现(或“借用”了!)一个通用存储库,现在目前仍然存在如何通过此存储库访问某些记录。
示例数据:
ID | Policy ID | History ID | Policy name
1 | 1 | 0 | Test
2 | 1 | 1 | Test
3 | 2 | 0 | Test1
4 | 2 | 1 | Test1
我需要的是具有最大历史ID的记录,因此策略ID 1和2将带有历史ID 2(Id的2和4)。
我的通用存储库代码如下:
public virtual IEnumerable<TEntity> Get(
Expression<Func<TEntity, bool>> filter = null,
Func<IQueryable<TEntity>, IOrderedQueryable<TEntity>> orderBy = null,
params Expression<Func<TEntity, object>>[] includeProperties)
{
IQueryable<TEntity> query = dbSet;
if (filter != null)
{
query = query.Where(filter);
}
foreach (var includeProperty in includeProperties)
{
query = query.Include(includeProperty);
}
if (orderBy != null)
{
return orderBy(query).ToList();
}
else
{
return query.ToList();
}
}
现在,我明白我应该在这个函数上使用filter参数,但是在我的场景中,它甚至可能吗?我想我必须使用分组方法。
我的通话代码是(如果它有帮助的话):
var policies = _policy.Get();
提前致谢!
答案 0 :(得分:0)
我认为你需要知道泛型类型才能做出像分组这样的特定linq之类的东西。例如,如果您不知道类型,则无法指定要分组的任何属性。