-1
Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf =>
  foreach(int _key in Keys){
    Perf.Id == _key ||
  }

(我需要多个 OR ||

我认为这比

    List<vw_UsuarioPerfilAtributo> teste = new List<vw_UsuarioPerfilAtributo>();
    teste.add(context.Find(Id));

可能的?

4

2 回答 2

1

也许你需要类似的东西:

//use a method because use a foreach in a lambda expression isn't allowed
public bool myFunction(vw_UsuarioPerfilAtributo Perf){
   foreach(int _key in Keys){
        if(Perf.Id == _key || /*other condition here*/)
           return true;
   }

   return false;
}

和:

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => myFunction(Perf);

要不就:

Func<vw_UsuarioPerfilAtributo, bool> expressionPerfil = Perf => Keys.Any(_key => Perf.Id == _key || /*other condition here*/);

我认为这比

teste.add(context.Find(Id));

在这种情况下context.Find(id)(其中 context 是 a List<>)返回找到的元素,而前面的代码返回一个布尔值,因为Func<vw_UsuarioPerfilAtributo, bool>

于 2012-12-07T14:20:39.013 回答
0

你可以PredicatorBuilder上课。它是关于 lambda 表达式的一些扩展方法的著名课程。看看这个链接:

http://petemontgomery.wordpress.com/2011/02/10/a-universal-predicatebuilder/

在 yoru 项目中添加此类后,您可以执行以下操作:

var result = list.Where(x => condition).And(x => condition).Or(x => condition).ToList();
于 2012-12-07T14:13:00.637 回答