0
public TEntity GetSingle(Func<TEntity, bool> predicate)
{
    try 
    { 
        var teste = _context.Set<TEntity>().Single(predicate); 
    }
    catch (Exception)
    {
        return null;
    }

    return _context.Set<TEntity>().Single(predicate);
}

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => Perf.IdUsuario == memo.IdUsuario//And Perf.IdTipoPerfil(MaxValue) // And Perf.Name.lenght > 3;

Session.Add("Permissao",vw_usuarioPerfilAtributoRepository.GetSingle(expressionPerfil).IdTipoPerfil);

简单的查询问题,但在 lambda 中,我不知道“AND”+“MaxValue”+其他“WHERE”的好方法,所有示例仅用于一个 WHERE。

4

5 回答 5

2

这是常规的 C# 代码,因此请使用&&运算符:

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil =
  Perf => Perf.IdUsuario == memo.IdUsuario &&
  Perf.IdTipoPerfil(MaxValue) &&
  Perf.Name.lenght > 3;

注意:lenght应该是lengthor Length

于 2012-11-06T12:22:27.780 回答
1

您可以使用 ( For And) 和For(OR)Lambda简单地添加任何条件&&||

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => 
                   Perf.IdUsuario == memo.IdUsuario  && 
                   Perf.IdTipoPerfil(MaxValue) && 
                   Perf.Name.lenght > 3;
于 2012-11-06T12:22:09.777 回答
1

我不确定您的问题,但在 where 子句中,您可以将&&AND 用于多个条件。对于您当前的语句,请尝试将 AND 替换为 &&。(条件运算符与c#相同)

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil =
Perf => Perf.IdUsuario == memo.IdUsuario 
                          && Perf.IdTipoPerfil(MaxValue) 
                          && Perf.Name.lenght > 3;
于 2012-11-06T12:23:56.583 回答
0

使用“&&”运算符,就像在普通 C# 中一样

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => 
    Perf.IdUsuario == memo.IdUsuario 
    && Perf.IdTipoPerfil(MaxValue)
    && Perf.Name.lenght > 3;
于 2012-11-06T12:27:36.510 回答
0

lamdas 是简单的内联声明函数。

声明如下: () => { }

还有一个简短的形式: () => ()=> { } // 一个 lambda 返回一个什么都不做的 lambda。

在 lambda 中,您可以使用范围内的每个局部变量。

我不知道你到底想做什么,但我希望我能帮上忙。:X

问候尼尔斯。

于 2012-11-06T12:25:04.370 回答