1

我有一个 BinaryExpression 列表,我需要将这个列表的元素加入到一个“对象”中。

IList<BinaryExpression> lstBin = new List<BinaryExpression>();

在我的列表中,我有这个:

{(item.Field1 = 1)} //First Element
{(item.Field2 = 99)} //Second Element
//So on..

我需要这样的东西:

(item => item.Field1 == 1 && item.Field2 == 99 && item.Field3 == 45)

我知道 Linq 有 Expression.And,我需要制定一个逻辑来实现它,但我做不到。我试图在我的列表中创建一个循环,但 Expression.And 需要两个表达式,而在我的循环中我只有一个。在此之后,我将从这个“对象”创建一个 Expression.Lamba,如下所示:

Expression<Func<T, bool>> expr = Expression.Lambda<Func<T, bool>>(singleExpression, parameter);
4

1 回答 1

2

我想你想要(使用 LINQ):

var singleExpression = lstBin.Aggregate(Expression.AndAlso);

如果您更喜欢编写循环:

var singleExpression = lstBin.First();

foreach (var expr in lstBin.Skip(1))
    singleExpression = Expression.AndAlso(singleExpression, expr);
于 2011-08-18T14:56:38.340 回答