我在从字符串创建基于 Lambda 的 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>>
所以它相当于下面 Where 方法中的 Linq 表达式:
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 包使用称为“动态查询”)