我有以下数据结构。对象A包含B的列表.B包含C的列表。
A
{
int id;
List<B>;
}
B
{
int id;
List<C>;
}
C
{
int id;
}
我有对象A,我有想要找到的B.id和C.id。我有LINQ来做到这一点:
A = SomeMethodToGetA();
int bid = 2;
int cid = 20;
B foundB = A.B.Where(item => item.id = bid).First()
C foundC = B.C Where(item => item.id = cid).First()
我想知道是否有办法在单个LINQ语句中执行上述语句。
答案 0 :(得分:1)
当然,只需链接两个Single
个查询:
C foundC = A.B.Single(item => item.id == bid)
.C.Single(item => item.id == cid)
如果B
内没有匹配的C
或匹配的B
,则会抛出异常,但原始查询也会。如果这些是问题,那么您的原始查询(添加空检查)可能更直截了当。