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的所有例子。
答案 0 :(得分:2)
这是常规的C#代码,因此请使用&&
运算符:
Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil =
Perf => Perf.IdUsuario == memo.IdUsuario &&
Perf.IdTipoPerfil(MaxValue) &&
Perf.Name.lenght > 3;
注意:lenght
可能应为length
或Length
。
答案 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;