0

我确信 Title 很清楚,所以让我举个例子,看看是否有人能指出我正确的方向:

public class topObj
{
    public List<midObj> Mids { get; set; }
    public List<botObj> Bots { get { // do some LINQ magic here } }
}
public class midObj
{
    public List<botObj> Bots { get; set; }
}
public class botObj
{
}

因此,从顶部对象中,我试图从顶部对象的 List<> 中的任何中间对象的 List<> 中获取所有底部对象的列表。

现在我有这样的事情:

public List<botObj> Bots
    {
        get
        {
            List<botObj> lst = new List<botObj>();
            foreach (midObj mo in Mids)
            {
                lst.AddRange(mo.Bots);
            }

            return lst;
        }
    }

当然,它可以工作,但我必须假设 LINQ 有一种方法可以用更少的行来做到这一点。

4

2 回答 2

3
 get { return Mids.SelectMany(mid => mid.Bots).ToList(); }

我也至少会考虑只返回IEnumerable<botObj>而不是 a List,这样您只需花费精力评估所有内容并将其放入列表中(如果您真的需要)。但是,如果您通过使用列表知道自己在做什么,请随时忽略此评论。

于 2012-05-02T16:50:47.127 回答
0

你将不得不做这样的事情:

get{ Mids.SelectMany(x => x.Bots).ToList(); }

希望能帮助到你!

于 2012-05-02T16:55:01.640 回答