从通用存储库返回查询的行

时间:2012-11-15 11:30:27

标签: c# .net entity-framework

我已经在我的项目中实现(或“借用”了!)一个通用存储库,现在目前仍然存在如何通过此存储库访问某些记录。

示例数据:

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();

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为你需要知道泛型类型才能做出像分组这样的特定linq之类的东西。例如,如果您不知道类型,则无法指定要分组的任何属性。