我有一个类如下:递归列表中包含财产
public class Feature
{
public string Name { get; set; }
public string DisplayName { get; set; }
public List<Feature> SubFeatures { get; set; } = new List<Feature>();
}
然后我有一个List<Feature> features = new List<Feature>;
在那里我存储我的所有功能。
现在,我想知道在我的features
变量中是否存在特定Feature
(按名称)。
然而,它可以存在于例如SubFeature
的SubFeature
的任何级别(SubFeature
)。
我已经得到的最接近的是这样的:
public bool FeatureExists(Feature feature, string name)
{
return feature.Name == name || feature.SubFeatures.Select(subFeature => FeatureExists(subFeature, name)).Any(result => result);
}
但它涉及到有使用上的FeatureExists()
呼叫者在同一时间给它传递一个顶级功能。
我确定有一个更简单的方法来做到这一点,我该如何正确地做到这一点?
为什么你需要使用'for'?你不能指向所有功能的顶级父母吗?这个方法被递归地调用,所以它将针对每个“SubFeatures”对象执行。 – foobar
你可以做的是创建一个名为层次结构的新变量.......从你的程序可以找出多少时间递归列表子功能:) –
我觉得我误解了一些东西......你是基本上要求'features.Any(x => FeatureExists(x,featureName))'? – grek40