2016-12-04 18 views
0

QueryableにはメソッドOrderBy(このIQueryableソース、式> keySelector)があります。フィールド名リストを受け入れるメソッドを作成する最善の方法

マルチキーを1つのキーではなく入力する方法が必要です。 1つのフィールドに使用されるOrderByメソッドのKeySelectorですが、私のメソッドは多くのフィールド名を受け入れます。

私は従うような方法を作成したが、私は、これはそれを行うための最善の方法であるかわからないよ:

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

はこれより優れたパターンが存在するですか?またはこれは正しいです。

+0

あなたは 'OrderBy'とその使用後に' ThenBy'およびその使用後に 'ThenBy'、その後に使用することができます... –

+0

M.kazem Akhgary私はのOrderByおよびThenByで問題ありませんよ。私はそれぞれの呼び出しでPropertyを受け入れないメソッドが必要です。私は1つの呼び出しで多くのプロパティを受け入れるメソッドを作成する必要があります。 –

答えて

0

現在のバージョンのC#では可能ではないと思います。たぶん同じメソッドを複数回適用することは可能でしょうか?例:

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

私のソリューションは仕事ですが、私はより良い解決策を達成するために調査します。 –

関連する問題