我是Lambda的新手

时间:2012-11-06 12:18:49

标签: c# lambda

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的所有例子。

5 个答案:

答案 0 :(得分:2)

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

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

注意:lenght可能应为lengthLength

答案 1 :(得分:1)

Lambda中,您可以使用&&(For And)和|| For(OR)

简单地添加任何条件
Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => 
                   Perf.IdUsuario == memo.IdUsuario  && 
                   Perf.IdTipoPerfil(MaxValue) && 
                   Perf.Name.lenght > 3;

答案 2 :(得分:1)

我不确定您的问题,但在where子句中,您可以将&&用于AND以及多个条件。对于您当前的陈述,请尝试将&替换为&amp;&amp;。 (Conditional operators与c#相同)

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

答案 3 :(得分:0)

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

声明如下:()=&gt; {}

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

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

我不知道你到底要做什么,但我希望我能提供帮助。 :X

关心尼尔斯。

答案 4 :(得分:0)

使用“&amp;&amp;”运算符,就像在普通的C#

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