У меня возникли трудности с созданием выражений Linq на основе лямбда-выражений из строки. Вот мой основной случай использования этого образца объекта / класса:
public class MockClass
{
public string CreateBy { get; set; }
}
В основном мне нужно преобразовать такую строку:
string stringToConvert = “x => x.CreateBy.Equals(filter.Value, StringComparison.OrdinalIgnoreCase”;
В выражение предиката / linq:
System.Linq.Expressions.Expression<Func<T, bool>> or in this example
System.Linq.Expressions.Expression<Func<MockClass, bool>>
Таким образом, это эквивалентно выражению Linq внутри метода Where ниже:
query = query.Where(x => x.CreateBy.Equals(filter.Value,
StringComparison.OrdinalIgnoreCase));
Я пробовал использовать следующие помощники, но, похоже, не могу понять, как заставить их работать в этом типе случая, когда я хочу иметь возможность построить выражение linq из строки, которая не известна заранее: http://www.albahari.com/nutshell/predicatebuilder.aspx
http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx (это теперь доступен как пакет NuGet, также называемый «DynamicQuery»)