我确信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&lt;&gt;中所有底部对象的列表。列表中的任何中间对象的&lt;&gt;来自顶层对象。
现在我有这样的事情:
public List<botObj> Bots
{
get
{
List<botObj> lst = new List<botObj>();
foreach (midObj mo in Mids)
{
lst.AddRange(mo.Bots);
}
return lst;
}
}
当然,它有效,但我必须假设LINQ可以用更少的行来实现这一点。
答案 0 :(得分:3)
get { return Mids.SelectMany(mid => mid.Bots).ToList(); }
我至少还要考虑只返回IEnumerable<botObj>
而不是List
,这样您只需要花费精力评估所有内容并将其放入列表中(如果您确实需要)。如果您通过使用列表知道自己在做什么,请随意忽略此评论。
答案 1 :(得分:0)
你必须做这样的事情:
get{ Mids.SelectMany(x => x.Bots).ToList(); }
希望它有所帮助!