0

我正在尝试根据以下内容返回对象集合:

我有三个公开课

  • ObjectA

  • ObjectB

  • ObjectC

C是 的孩子B,并且B是 的孩子A

ObjectC当它们作为 aBA对象的一部分存在时,我需要获取 的集合。

这是我到目前为止所拥有的:

#region setup

private ObjectADao objectADao;

public void Init()
{
    objectADao = new ObjectA();
    objectADao.SqlMapper = SqlMapper;
    objectADao.AfterPropertiesSet();
}

#endregion

 ICollection<ObjectA> objectACollection = objectADao.FindAll(1000);
 var objectAwithObjectB= objectACollection.Where
 (p => p.objectB != null && p.objectB.Count > 0);
//ICollection<ObjectB> = objectAwithObjectB....

此时我有一个 A 类型的集合(objectAwithObjectBObject,但前提是它们包含一个ObjectB

那是我被卡住了。我现在需要ObjectB从上面的类型集合中获取一个类型的集合A。(所以我最终可以得到C类型)。

ObjectB并且ObjectC没有自己的DAO设置,只能通过ObjectA. 在这一点上我似乎无法获得单独的集合ObjectB......

我希望这是有道理的。我还很新,所以请温柔一点。任何帮助将不胜感激。

4

2 回答 2

1

您可以使用 LINQ 选择对象的属性。您将它们投影到不同的集合,在这种情况下,从 A 到 B 到 C。见下文。

IEnumerable<ObjectB> projectionToCollectionOfObjectB = objectAwithObjectB.Select(x => x.ObjectB);

IEnumerable<ObjectC> projectionToCollectionOfObjectC = projectionToCollectionOfObjectB.Select(x => x.ObjectC);
于 2013-07-08T15:37:00.187 回答
0

尝试以下

objectACollection
.Where(p => p.objectB != null && p.objectB.Count > 0)
.SelectMany(objA => objA.ObjectB)

这会给你一个扁平的 IEnumerable

于 2013-07-08T15:56:17.283 回答