结合Where语句的表达式

Roo*_*ian 2 c# linq lambda expression expression-trees

可能重复:
如何将LINQ表达式合并为一个?

public bool IsUnique(params Expression<Func<Employee, bool>>[] properties)
{
    var combinedProperties = Combine(properties);
    var rowCount = _session.QueryOver<Employee>().Where(combinedProperties).ToRowCountQuery().RowCount();
    return rowCount == 0;
}

Expression<Func<Employee, bool>> Combine(Expression<Func<Employee, bool>>[] properties)
{
    ???
}
Run Code Online (Sandbox Code Playgroud)

用法:

var isUnique = _employeeRepository.IsUnique(x => x.FirstName == commandMessage.FirstName, x => x.LastName == commandMessage.LastName);
Run Code Online (Sandbox Code Playgroud)

有没有一种方法将谓词与AND运算符相结合?

Ken*_*Ito 5

最简单的方法是循环遍历params数组并调用.每个表达式都在哪里.

Pseudo
var query = _session.QueryOver<Employee>()
for each expression in expressions
   query = query.Where(expression)
Run Code Online (Sandbox Code Playgroud)

我知道这不是你提出的问题,但它可能已经足够好了,因为它实现了总体目标?