1

BinaryExpressionのリストがあり、このリストの要素を1つの「オブジェクト」に結合する必要があります。

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があることを知っています。そして、これを実装するためのロジックを作成する必要がありますが、できませんでした。リスト内でExpressionをループしようとしましたが、Expressionが2つ必要で、ループ内には1つしかありません。この後、次のように、この単一の「オブジェクト」から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 に答える