आप जानना चाहते हैं कि एक घटक में घटकों के किसी भी दिए गए प्रकार का है चाहता हूँ कर सकते हैं?
var webType = ComponentType.WebApplication;
IEnumerable<Component> webApps = from c in components
from innerComp in c.Components
where innerComp.Type == webType;
bool anyWebApp = webApps.Any();
क्या innercomp.components के बारे में?
संपादित: तो आप ऊपर या दूसरे स्तर पर पुनरावर्ती केवल नहीं दिए गए प्रकार का घटक लगाना चाहते हैं।
public static IEnumerable<T> Traverse<T>(this IEnumerable<T> source, Func<T, IEnumerable<T>> fnRecurse)
{
foreach (T item in source)
{
yield return item;
IEnumerable<T> seqRecurse = fnRecurse(item);
if (seqRecurse != null)
{
foreach (T itemRecurse in Traverse(seqRecurse, fnRecurse))
{
yield return itemRecurse;
}
}
}
}
इस तरह से इस्तेमाल किया जा रहा:
var webType = ComponentType.WebApplication;
IEnumerable<Component> webApps = components.Traverse(c => c.Components)
.Where(c => c.Type == webType);
bool anyWebApp = webApps.Any();
नमूना डेटा:
var components = new List<Component>() {
new Component(){ Type=ComponentType.WebService,Components=null },
new Component(){ Type=ComponentType.WebService,Components=new List<Component>(){
new Component(){ Type=ComponentType.WebService,Components=null },
new Component(){ Type=ComponentType.ComponentGroup,Components=null },
new Component(){ Type=ComponentType.WindowsService,Components=null },
} },
new Component(){ Type=ComponentType.WebService,Components=null },
new Component(){ Type=ComponentType.WebService,Components=new List<Component>(){
new Component(){ Type=ComponentType.WebService,Components=new List<Component>(){
new Component(){Type=ComponentType.WebApplication,Components=null}
} },
new Component(){ Type=ComponentType.WindowsService,Components=null },
new Component(){ Type=ComponentType.WebService,Components=null },
} },
new Component(){ Type=ComponentType.WebService,Components=null },
new Component(){ Type=ComponentType.ComponentGroup,Components=null },
new Component(){ Type=ComponentType.WebService,Components=null },
};
innercomp.components के बारे में क्या? –
@IrrationalRationalWorks: मेरा जवाब संपादित किया। –
मैं बारिश खा रहा हूं ... मुझे –