可能重复:
在c#中组合两个lamba表达式
我有两个以下表达式:
Expression<Func<string, bool>> expr1 = s => s.Length == 5;
Expression<Func<string, bool>> expr2 = s => s == "someString";
Run Code Online (Sandbox Code Playgroud)
现在我需要将它们与OR结合起来.像这样的东西:
Expression.Or(expr1, expr2)
Run Code Online (Sandbox Code Playgroud)
有没有办法使这类似于上面的代码方式:
expr1 || expr2
Run Code Online (Sandbox Code Playgroud)
我理解在这个例子中我可以将它组合在一起:
Expression<Func<string, bool>> expr = s => s.Length == 5 || s == "someString"
Run Code Online (Sandbox Code Playgroud)
但我不能在我的真实代码中这样做,因为我将expr1和expr2作为方法的参数.
我对如何在 Linq to Entities 中链接两个列表感到Linq很困惑。EF
我首先使用数据库,并且有两个表:
Person,带有列Id
和
Ability,带有列Id,PersonId并且Value
因此,Person类有一个ICollection<Ability>, 称为AllAbilities.
在某些视图的 ViewModel 中,我返回一个 int 列表,表示用户输入的文本框值Ability.Value,称为AbilitiesInput。我的需求很简单,在控制器中我必须调用一个查询来执行以下操作:
GetAll(person =>
for(i = 0; i < AbilitiesCount; i++) { person.AllAbilities[i] > AbilitiesInput[i] }
)
Run Code Online (Sandbox Code Playgroud)
其中GetAll方法看起来像我的通用存储库中的那样:
public virtual async Task<List<TEntity>> GetAll(
Expression<Func<TEntity, bool>> wherePredicate = null
{ ... }
Run Code Online (Sandbox Code Playgroud)
要继续,我只需要一个布尔值,它可以检查 every 是否AllAbilities[i]高于AbilitiesInput[i],但我尝试的任何方法都不起作用。
我尝试更改AbilitiesInput为List<KeyValuePair>or …