Linq -表达式.并连接N个元素BinayExpression

本文关键字:元素 BinayExpression 连接 表达式 Linq | 更新日期: 2023-09-27 18:05:54

我有一个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有表达式。我需要一个逻辑来实现这个,但是我做不到。我试着在列表中做一个循环,但是表达式。并且需要两个表达式,而在我的循环中我只有一个。之后,我将制作一个表达式。从这个单一的"对象"中提取Lamba,像这样:

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

Linq -表达式.并连接N个元素BinayExpression

我认为你需要(使用LINQ):

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

如果你更喜欢写循环:

var singleExpression = lstBin.First();
foreach (var expr in lstBin.Skip(1))
    singleExpression = Expression.AndAlso(singleExpression, expr);