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