0

我有两个看起来像这样的对象模型:

public class MyObject
{
   public List<SomeOtherObject> TheListOfSomeOtherObjects { get; set; }
}

public class SomeOtherObject
{
   long SomeOtherObjectID { get; set; }
}

我有一个MyObjects被调用列表ListOfMyObjects,我想从中提取SomeOtherObjectID列表中的所有内容TheListOfSomeOtherObjects

我想写这样的东西:

var ListOfAllSomeOtherObjectID = (from l in ListOfMyObjects
                           select l.SomeOtherObject.SomeOtherObjectID ).ToList();

由于语法,它不起作用。如何获取嵌套列表的列表?

感谢您的建议。

4

3 回答 3

1

您正在尝试展平嵌套列表:

var allChildren = myObjects.SelectMany(o => o.ChildObjects).ToList();

如果你想获得这些对象的属性,你需要一个单独的Select()调用:

var allChildren = myObjects.SelectMany(o => o.ChildObjects)
                           .Select(c => c.SomeProperty)
                           .ToList();
于 2012-10-14T16:42:05.817 回答
0

您可以执行以下操作:

var ids = l.SelectMany(o => o.TheListOfSomeOtherObjects).Select(o => o.SomeOtherObjectID);

从列表列表中SelectMany创建一个扁平列表。

ToList()如果需要列表,请添加。

于 2012-10-14T16:48:33.633 回答
-1

尝试一下

var listSOOIds = listOfMyObjects.TheListOfSomeOtherObjects.Select(s => s.SomeOtherObjectID).ToList();
于 2012-10-14T16:48:24.760 回答