リストを辞書に変換する必要があります。これは私がオブジェクトとその子オブジェクト/リストを反復処理し、それらを接続するいくつかのコードを作成していて、私は、idフィールドの名前がわからない、次の構文リストを文字列を使って辞書に変換する式c#
var dictionary = myList.ToDictionary(e => e.Id);
を使用してC#で行うことができます私のdbcontext。
Iすでに私のキー値であるプロパティの名前を決定するためのコードを持っているが、テストのために私はちょうど「ID」を使用することができます(他は異なる場合があります)
だから私は基本的にこの文字列を作成する必要があります」 c => e.Id "をFuncに渡しますが、Expression
オブジェクトのパラメータがわかりません。
は、これまでのところ私は式の専門家であるこの
public static Expression<Func<T, bool>> strToFunc<T>(string propName)
{
Expression<Func<T, bool>> func = null;
var prop = typeof(T).GetProperty(propName);
ParameterExpression tpe = Expression.Parameter(typeof(T));
var left = Expression.Property(tpe, prop);
return func;
}
誰かが、あなたの助けを本当に感謝しています。私はあなたの質問を理解している場合、これは私はそれを行うだろうかで事前
はたぶん、[動的なLINQ](https://dynamiclinq.codeplex.com/)を見てみましょう。それはちょうどあなたが探しているものかもしれません。 – Mats391
テストプログラムで 'Expression> tmp = x => x.SomeProperty;'とすると、デバッガで 'tmp'オブジェクトを見ることができます。あなたが必要とする作品。また、なぜあなたの関数 ''を表現しようとしていますか? '' –
私は疑問を誤解しているが、キー値を含むプロパティの名前を知っていれば訂正します、 'var dictionary = myList.ToDictionary(e => e.GetType()。GetProperty(propName).GetValue(e));'のようなことをやめさせるのは何ですか? – Innat3