linq 内の orderby 関数で使用するために渡す動的ラムダ式を作成するにはどうすればよいですか?
私は基本的にを含む文字列になる場所で変換queryResults.OrderByDescending();
したいと考えています。queryResults.OrderByDescending(myCustomGeneratedLambdaExp);
myCustomGeneratedLambdaExp
x => x.name
ありがとう
linq 内の orderby 関数で使用するために渡す動的ラムダ式を作成するにはどうすればよいですか?
私は基本的にを含む文字列になる場所で変換queryResults.OrderByDescending();
したいと考えています。queryResults.OrderByDescending(myCustomGeneratedLambdaExp);
myCustomGeneratedLambdaExp
x => x.name
ありがとう
動的ラムダ式がどこで正確に必要だったかはわかりません。とにかく、ラムダ式を動的に生成する最良の方法は、式ツリーを使用することです。これは、このテーマに関する2つの優れたチュートリアルです。
このコードは、要求したようなラムダ式を生成します( "x => x.name"):
MemberInfo member = typeof(AClassWithANameProperty).GetProperty("Name");
//Create 'x' parameter expression
ParameterExpression xParameter = Expression.Parameter(typeof(object), "x");
//Create body expression
Expression body = Expression.MakeMemberAccess(targetParameter, member);
//Create and compile lambda
var lambda = Expression.Lambda<LateBoundGetMemberValue>(
Expression.Convert(body, typeof(string)),
targetParameter
);
return lambda.Compile();
お役に立てれば
動的 LINQを参照してください
または、switch ステートメント、リフレクション、またはdynamic
C# 4 の型を使用して、指定されたフィールド名に基づいて値を返すことができます。