相关疑难解决方法(0)

如何结合两个lambda

可能重复:
在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作为方法的参数.

.net c# expression-trees

28
推荐指数
2
解决办法
6081
查看次数

在 linq toEntity where 子句中建立两个列表之间的链接

我对如何在 Linq to Entities 中链接两个列表感到Linq很困惑。EF

我首先使用数据库,并且有两个表:

Person,带有列Id

Ability,带有列IdPersonId并且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],但我尝试的任何方法都不起作用。
我尝试更改AbilitiesInputList<KeyValuePair>or …

c# linq entity-framework

1
推荐指数
1
解决办法
1537
查看次数

标签 统计

c# ×2

.net ×1

entity-framework ×1

expression-trees ×1

linq ×1