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运算符相结合?
最简单的方法是循环遍历params数组并调用.每个表达式都在哪里.
Pseudo
var query = _session.QueryOver<Employee>()
for each expression in expressions
query = query.Where(expression)
Run Code Online (Sandbox Code Playgroud)
我知道这不是你提出的问题,但它可能已经足够好了,因为它实现了总体目标?