0

从下一个实体定义开始:

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 循环(我觉得它在“力”中),但我找不到它。

有人可以帮忙吗?

4

1 回答 1

3

您可以使用 doubleAny避免循环:

authList.Where(a => a.Certificados
                     .Any(c1 => certList.Any(c2 => c1.IDCert == c2.IDCert)));
于 2013-05-13T07:57:05.100 回答