相关疑难解决方法(0)

Expression.Lambda和运行时的查询生成,最简单的"Where"示例

我试图在运行时生成一个简单的Lambda Expression而没有运气......这样的事情:

var result = queryableData.Where(item => item.Name == "Soap")
Run Code Online (Sandbox Code Playgroud)

这是我的示例类和fixture可查询:

public class Item
{
    public int Id { get; set; }
    public string Name { get; set; }
}

IQueryable<Item> queryableData = ...;
Run Code Online (Sandbox Code Playgroud)

然后我在运行时生成一个lambda表达式,正确的代码如下:

//"item" in "item =>..."
var item = Expression
    .Parameter(typeof(Item), "item");

//property of my item, this is "item.Name"
var prop = Expression
    .Property(item, "Name");

//then "Soap" in '... => item.Name=="Soap"'
var value = Expression.Constant("Soap");

//equality expression "==" in my primer
var equals = Expression.Equal(prop, …
Run Code Online (Sandbox Code Playgroud)

.net c# lambda dynamic-language-runtime expression-trees

43
推荐指数
1
解决办法
2万
查看次数