从子列表中获取对象

时间:2015-03-31 18:48:20

标签: c# linq

我有以下数据结构。对象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语句中执行上述语句。

1 个答案:

答案 0 :(得分:1)

当然,只需链接两个Single个查询:

C foundC = A.B.Single(item => item.id == bid)
            .C.Single(item => item.id == cid)

如果B内没有匹配的C或匹配的B,则会抛出异常,但原始查询也会。如果这些是问题,那么您的原始查询(添加空检查)可能更直截了当。