【发布时间】:2014-01-31 21:59:28
【问题描述】:
我想通过扩展方法找到所有左撇子使用递归linq的人。
我看过这个answer,但this 存在问题(恕我直言):(由于静态上下文而作为扩展方法应用时)
关键字 this 在静态方法中无效
所以这是我尝试过的:
我有一个Person 课程:
public class Person
{
public List<Person> Children = new List<Person>();
public bool IsLeftHanded;
}
这里是externsion方法的代码:
public static class Extensions
{
public static IEnumerable<Person> DescendantsAndSelf(this IEnumerable<Person> list)
{
yield return this;
foreach (var item in list.SelectMany(x => x.Children.DescendantsAndSelf()))
{
yield return item;
}
}
}
但是yield return this;有问题
问题:
我如何fix 我的代码来支持“我和我的孩子”把戏? (目标:找到所有左撇子)
nb
请注意,我想使用 linq 和递归,以便体验使用递归的 linq。
【问题讨论】:
-
this在静态类中不起作用。你应该传递一个 Person 类。 -
@JeroenvanLangen 是的,正如你所看到的,我已经写过它由于静态上下文而无法工作。好吧,我认为 wudzik 的解决方案非常合适。谢谢
-
你传递一个
IEnumerable<Person>,你应该传递“根”人。 (就像 wudzik 所做的那样 +1) -
@RoyiNamir 对您有帮助吗?您需要更好的答案吗?