FlattenExtensionFlatten(IEnumerable, FuncIEnumerable, Boolean) Method
            Flattens a sequence containing arbitrarily-nested sequences. An
            additional parameter specifies a predicate function used to
            determine whether a nested 
IEnumerable should be
            flattened or not.
            
Namespace: MoreLinq.ExtensionsAssembly: MoreLinq (in MoreLinq.dll) Version: 4.4.0+6d97c3b1d482f98300f4446df14742b0e3fafbec
public static IEnumerable<Object> Flatten(
	this IEnumerable source,
	Func<IEnumerable, bool> predicate
)
<ExtensionAttribute>
Public Shared Function Flatten ( 
	source As IEnumerable,
	predicate As Func(Of IEnumerable, Boolean)
) As IEnumerable(Of Object)
public:
[ExtensionAttribute]
static IEnumerable<Object^>^ Flatten(
	IEnumerable^ source, 
	Func<IEnumerable^, bool>^ predicate
)
[<ExtensionAttribute>]
static member Flatten : 
        source : IEnumerable * 
        predicate : Func<IEnumerable, bool> -> IEnumerable<Object> 
- source  IEnumerable
- The sequence that will be flattened.
- predicate  FuncIEnumerable, Boolean
- 
            A function that receives each element that implements
            IEnumerable and indicates if its elements should be
            recursively flattened into the resulting sequence.
            
IEnumerableObject
            A sequence that contains the elements of 
source
            and all nested sequences for which the predicate function
            returned 
true.
            In Visual Basic and C#, you can call this method as an instance method on any object of type 
IEnumerable. When you use instance method syntax to call this method, omit the first parameter. For more information, see 
Extension Methods (Visual Basic) or 
Extension Methods (C# Programming Guide).