LINQ相关子查询

时间:2013-05-13 07:50:58

标签: c# linq .net-3.5

从下一个实体定义开始:

Public Class Certificate{
  public  ID as int;
}

Public Class Authority{
  ID int;
  Certificates IEnumerable<Certificate>;
}

我的功能包含2个集合:IEnumerable<Certificate>IEnumerable<Authority>。我需要在Authorities输入参数中选择Certificates collection IEnumerable<Certificate>至少有一个证书。

我的第一个实施是枚举IEnumerable<Certificate>并使用Authority选择Where(predicate)

Public IEnumerable<Authority> SelectAuthorities(authList IEnumerable<Authority>, certList IEnumerable<Certificate>){

  foreach (Certificate loadedCert in certList) {
    yield return auth.Where(a => a.Certificados.Any(c1 => c1.IDCert == loadedCert.IDCert));
  }  

}

我认为必须有一种方法可以避免使用更复杂的linq相关子查询的for循环(我觉得它在“force”中)但是我找不到它。

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

您可以使用双Any避免循环:

authList.Where(a => a.Certificados
                     .Any(c1 => certList.Any(c2 => c1.IDCert == c2.IDCert)));