我有一个 Linq 表达式列表,List<Expression>
其中每个表达式类型(表达式将返回的类型)是Item
or Item[]
。
我正在尝试编写一些代码,将提到的集合作为输入参数并生成一个 Linq 表达式,该表达式将返回一个项目列表(或数组)(Item[]
)。
这是一个抽象的例子:
public static string[] GetStrings()
{
return new[]
{
"first",
"second",
"third"
};
}
public static string GetString()
{
return "single1";
}
private void SOExample()
{
var expressions = new List<Expression>
{
Expression.Call(GetType().GetMethod("GetString")),
Expression.Call(GetType().GetMethod("GetStrings")),
Expression.Call(GetType().GetMethod("GetString")),
Expression.Call(GetType().GetMethod("GetStrings"))
};
// some magic code here
var combined = SomeMagicHere(expressions);
}
private Expression SomeMagicHere(List<Expression> expressions)
{
foreach (var expression in expressions)
{
if (expression.Type.IsArray)
{
// Use array's elements
}
else
{
// Use expression
}
}
我要做的是生成一个表达式,它将Item
从提供的列表中返回一个列表(在我的示例中为字符串)。