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);

クエリの単純な問題ですが、ラムダでは、「AND」+「MaxValue」+その他の「WHERE」すべての例を1つのWHEREに対して行う良い方法がわかりません。

4

5 に答える 5

2

これは通常のC#コードなので、&&演算子を使用します。

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

注:lenghtおそらくまたはである必要がありlengthますLength

于 2012-11-06T12:22:27.780 に答える
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 に答える
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 に答える
0

Lamdasは、単純なインライン宣言関数です。

宣言は次のようになります:()=> {}

短い形式もあります:()=>()=>{}//何もしないラムダを返すラムダ。

ラムダ内では、スコープ内のすべてのローカル変数を使用できます。

あなたが何をしようとしているのか正確にはわかりませんが、私が助けてくれることを願っています。:バツ

よろしくニルス。

于 2012-11-06T12:25:04.370 に答える
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 に答える