LINQ的相关子查询
问题描述:
下一个实体的定义出发:LINQ的相关子查询
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>
并使用Where(predicate)
选择Authority
。
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循环的方式,但我不能找到它。
任何人都可以帮忙吗?
答
您可以使用双Any
到避免循环:
authList.Where(a => a.Certificados
.Any(c1 => certList.Any(c2 => c1.IDCert == c2.IDCert)));
运行完美。谢谢。这很简单。我想我是在程序员的块里。 :) – jlvaquero 2013-05-13 08:48:49