返回筛选后的结果集合

本文关键字:结果 集合 筛选 返回 | 更新日期: 2023-09-27 18:21:42

我正试图返回基于以下内容的对象集合:

我有三个公开课

  • ObjectA

  • ObjectB

  • ObjectC

CB的子级,而BA的子级。

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

这就是我目前所拥有的:

#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....

此时,我有一个ObjectA类型的集合(objectAwithObjectB),但前提是它们上包含ObjectB

那就是我陷入困境的原因。我现在需要从上面的A类型集合中获得一个ObjectB类型集合。(所以我最终可以使用C类型)。

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

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

返回筛选后的结果集合

您可以使用LINQ来选择对象的属性。您可以将它们投影到不同的集合中,在本例中,从A到B再到C。参见下文。

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

尝试以下

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

这将为您提供平坦的IEnumerable