Следующая ссылка содержит информацию о динамическом запросе linq. Возможно, размышление над их DLL может помочь. http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx
В конечном счете вам нужно будет использовать статические методы фабрики в System.Linq.Expressions.Expression для создания выражения.
Я делаю 2 предположения здесь:
- Вы действительно хотите струны з = мА + тВ
- А и В оба свойства, а не поля
Вот тестовый класс для иллюстрации мой пример:
Это статический класс и метод, который будет строить лямбда xpression, convert to Expression < Func < TestClass, строка > >, затем скомпилируйте его в Func < TestClass, строку >, которую вы можете запускать так же, как и любой вызов метода.
public static class TestHelper
{
public static string GetString()
{
var testObject = new TestClass { A = "Hey", B = "Man" }; //Replace TestClass
var type = testObject.GetType();
var parameter = Expression.Parameter(type, "m");
var property1 = Expression.Property(parameter, "A");
var property2 = Expression.Property(parameter, "B");
MethodInfo mi = typeof(string).GetMethod("Concat", new Type[] { typeof(string), typeof(string) });
var concat = Expression.Call(mi, property1, property2);
var lambda = Expression.Lambda<Func<TestClass, string>>(concat, parameter); //Replace TestClass
var newFunction = lambda.Compile();
string s = newFunction(testObject); //Replace TestClass
}
}