0

プロジェクト内に汎用リポジトリを実装 (または Web から「借用」) しましたが、現在、このリポジトリを介して特定のレコードにアクセスする方法に行き詰まっています。

サンプルデータ:

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 に答える