2016-08-29 1 views
0

Bei der Implementierung von Kendo Grid in MVC, die serverseitige Operationen ausführen, stehe ich in einer heiklen Situation, d. H. Ich muss meine Daten filtern, sortieren und mit linq paginieren. Und alle Informationen, die ich bekomme, sind in ODataQueryOptions Typ.Filterung auf Linq mit benutzerdefiniertem Typ mit ODataQueryOptions

(nicht sicher, ob es notwendig ist, zu schweigen oder nicht, aber aus Gründen der Vollständigkeit führen wir Abfrageoperationen durch UnitOfWork Muster)

So Operation, die Abfrage durchführen wird unten kopiert:

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

Nun möchte ich wissen, ob es eine Option gibt, verbleibende oData-Optionen auf die linq-Abfrage anzuwenden (wie Sie $ skip sehen und $ top wird bereits angewendet, wie können wir OrderByQueryOption und FilterQueryOption anwenden).

Antwort

0

In OrderByQueryOption gibt es eine Eigenschaft OrderByNodes Sie diese Abfrage zu konstruieren, verwenden können, aber in FilterQueryOption, dann ist es schwer, die FilterClause zu übersetzen, benötigen Sie bitte den FilterBinder dies für Sie zu tun, aber es ist in 5.9.1 nicht öffentlich, es ist Öffentlichkeit in 6.0.0.

+0

Ich bekomme etwas von Typ Func , IOrderedQueryable > direkt von OrderByQueryOption würde mir helfen (als Methode, die Order von in UnitOfWork ausführen erwarten diesen Typ) –

Verwandte Themen