对象上的表达条件

时间:2014-12-19 05:59:33

标签: c# linq lambda expression

我有一个对象和一个linq表达式。我想通过这样的表达式来验证对象:

    obj: Account account = new Account(0);
    exp: (a => a.balance == 0)

    public bool IsAccountClosed(Account account, Expression<Func<TEntity, bool>> matchingCriteria)
    {
       // ... ??? 
    }

2 个答案:

答案 0 :(得分:2)

您不需要Expression,只需Func,其第一个通用参数应为Account

public bool CheckAccountCriteria(Account acccount, Func<Account, bool> matchingCriteria)
{
    if (matchingCriteria(account)) 
    {
        // matches the criteria
    }
}

你也可以使用Predicate<Account>,这可能是测试条件值的更惯用的方法:

public bool CheckAccountCriteria(Account acccount, Predicate<Account> matchingCriteria)
{
    if (matchingCriteria(account)) 
    {
        // matches the criteria
    }
}

但是,正如死亡外科医生指出的那样,你可能只会让不必要的东西变得错综复杂。

答案 1 :(得分:0)

你的问题是什么?如果你想检查帐户,你可以这样做,没有linq表达。

public bool IsAccountClosed(Account acccount)
{
   return account.balance == 0;
}