Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Linq-Expression.And连接N个元素BinayExpression_C#_Linq_Expression Trees_Linq Expressions - Fatal编程技术网

C# Linq-Expression.And连接N个元素BinayExpression

C# Linq-Expression.And连接N个元素BinayExpression,c#,linq,expression-trees,linq-expressions,C#,Linq,Expression Trees,Linq Expressions,我有一个BinaryExpression列表,我需要将该列表中的元素连接到一个“对象”中 我需要这样的东西: (item => item.Field1 == 1 && item.Field2 == 99 && item.Field3 == 45) Expression<Func<T, bool>> expr = Expression.Lambda<Func<T, bool>>(singleExpression

我有一个BinaryExpression列表,我需要将该列表中的元素连接到一个“对象”中

我需要这样的东西:

(item => item.Field1 == 1 && item.Field2 == 99 && item.Field3 == 45)
Expression<Func<T, bool>> expr = Expression.Lambda<Func<T, bool>>(singleExpression, parameter);
我知道Linq有表达式,我需要做一个逻辑来实现它,但我不能。我试图在我的列表中创建一个循环,但没有表达式。需要两个表达式,而在我的循环中只有一个。 在此之后,我将从这个“对象”生成一个表达式.Lamba,如下所示:

(item => item.Field1 == 1 && item.Field2 == 99 && item.Field3 == 45)
Expression<Func<T, bool>> expr = Expression.Lambda<Func<T, bool>>(singleExpression, parameter);
Expression expr=Expression.Lambda(单表达式,参数);
我想你想要(与LINQ一起):

如果您喜欢编写循环:

var singleExpression = lstBin.First();

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

实际上,您应该使用Expression.AndAlso而不是按位Expressopm。如这里所述:@eluxen:Yes;你说得对。不记得那是怎么从我身边溜走的。
var singleExpression = lstBin.First();

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