我有一個類如下:遞歸列表中包含財產
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