2016-08-29 5 views
0

MVCでサーバ側の操作を実行する剣道グリッドを実装しているときに、自分自身がフィルタリング、並べ替え、linqを使用してデータをページするという難しい状況に遭遇します。私が得たすべての情報はODataQueryOptions型です。ODataQueryOptionsを使用してカスタムタイプを含むLinqでのフィルタリング

public static List<T> GetT(this IRepositoryAsync<T> repository, ODataQueryOptions<T> options) 
    { 
     var query = repository.Query().Tracking(false).Include(x => x.T2) 
      .Select(s => new 
      { 
       P1 = s.P1, 
       P2 = s.P2, 
       P3 = s.T2.P1 + "," + s.T2.P2 
      }) 
      .Select(s => new T1 
      { 
       P1 = s.P1, 
       P2 = s.P2, 
       P3 = s.P3 
      }); 

     if (options.Skip != null) 
      query = query.Skip(options.Skip.Value); 
     if (options.Top != null) 
      query = query.Take(options.Top.Value); 

     return query.ToList(); 
    } 

(もちろんのかいないが、完全を期すために、私たちはUnitOfWorkのパターンを介してクエリ操作を行う必要があるかどうかわからない)ので、クエリを実行する動作を以下にコピーされます

ここでは、残りのoDataオプションをlinqクエリに適用するオプションがあるかどうかを知りたいと思います($ skipと$ topが既に適用されているのを見れば、OrderByQueryOptionとFilterQueryOptionをどのように適用できますか)。それはだ、OrderByQueryOption

答えて

0

はあなたのクエリを構築するためにこれを使用することができますOrderByNodesプロパティがありますが、FilterQueryOptionで、それは、あなたがFilterBinderがあなたのためにこれを実行する必要がFilterClauseを翻訳するのは難しいが、それは5.9.1で、公開ではありません公開された6.0.0

+0

私は、OrderByQueryOptionから直接Func 、IOrderedQueryable >型のものを得ることになります(UnitOfWorkでOrder Byを実行するメソッドがこの型を予期するメソッドとして) –

関連する問題