从下一个实体定义开始:
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”中)但是我找不到它。
有人可以帮忙吗?
答案 0 :(得分:3)
您可以使用双Any
来避免循环:
authList.Where(a => a.Certificados
.Any(c1 => certList.Any(c2 => c1.IDCert == c2.IDCert)));