0

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

样本数据:

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

提前致谢!

4

1 回答 1

0

我认为您需要先了解泛型类型,然后才能执行任何特定的 linq 操作,例如分组。例如,如果您不知道类型,则无法指定要分组的任何属性。

于 2012-11-15T13:28:57.170 回答