1

したがって、プロパティを持つオブジェクトのコレクションがあります。

ParentObject parentObj
{
    string SomeProperty1
    string SomeProperty2
}

これらのプロパティをクエリする前に、ToLower()およびTrim()にする必要があります。私は私ができることを理解しています:

Expression.Call(pe, typeof(string).GetMethod("Trim", Type.EmptyTypes)); // Or ToLower

Expression.Property(pe, typeof(string).GetProperty("SomeProperty1"));

しかし、どうすればそれらを組み合わせることができますか?

私は同等のものが必要です

from query in parentObjCollection
where query.SomeProperty1.Trim() == "asdf"
select query

何かご意見は?

4

1 に答える 1

2

Expression.Property式自体を返します。それを呼び出しの最初のパラメーターとして使用できます (完全な例):

var parent = new ParentObject{ SomeProperty1 = "    test" };
var pe = Expression.Constant(parent);
var property = Expression.Property(pe, typeof(ParentObject).GetProperty("SomeProperty1"));
var call = Expression.Call(property, typeof(string).GetMethod("Trim", Type.EmptyTypes));

var result = Expression.Lambda(call).Compile().DynamicInvoke();

Console.WriteLine(result); // -> "test"

Expression.Property私はあなたの電話を変更しなければならなかったことに注意してください。

于 2013-02-16T15:08:35.370 に答える