2016-12-04 1 views
0

Queryable hat die Methode OrderBy (diese IQueryable-Quelle, Expression> keySelector).Die beste Methode, um eine Methode zu erstellen, die das Feld name akzeptiert

Ich brauche eine solche Methode, die Multi-Key nicht einen Schlüssel eingeben. Die OrderBy-Methode KeySelector wird für ein Feld verwendet, aber meine Methode akzeptiert viele Feldnamen.

Ich bin wie folgt erstellt Methode, aber ich bin nicht sicher, ob dies am besten Weg ist, das zu tun:

class Foo<T> 
{ 
    public void MyMethod(Expression<Func<T, Object>> selector) 
    { 
     List<string> props = ((NewExpression)selector.Body).Members.Select(p => p.Name).ToList(); 
     //some work with props 
    } 
} 

Foo<ClassA> foo = new Foo<ClassA>(); 
foo.MyMethod(u => new { u.MyProperty, u.MyProperty2 }); 

sind besser Muster als diese vorhanden ist? oder das ist richtig.

+0

Sie können 'OrderBy' verwenden und nach dem Gebrauch' ThenBy' und nach dem Gebrauch 'ThenBy' und danach ... –

+0

M.kazem Akhgary ich bin nicht Problem von OrderBy und ThenBy. Ich brauche eine Methode, die bei jedem Aufruf nicht auf Property akzeptiert wird. Ich muss eine Methode erstellen, die viele Eigenschaften in einem Aufruf akzeptiert. –

Antwort

0

Ich glaube nicht, dass es in der aktuellen Version von C# möglich ist. Vielleicht ist es möglich, die gleiche Methode mehrmals für Sie anzuwenden. Ex:

foo.MyMethod(u => u.MyProperty).MyMethod(u => u.MyProperty2); 
+0

meine Lösung ist Arbeit, aber ich untersuche, um bessere Lösung zu erreichen. –

Verwandte Themen