public TKey CreateObjectKey <TKey>() { return(ObjectSets.Count <= 0 ? default(TKey) : CastTo <TKey>(ObjectSets.Max <KeyValuePair <Type, object>, long>( item => { IEnumerable objectSet = item.Value as IEnumerable; if (ReferenceEquals(objectSet, null)) { return 0; } var keyValues = KeyValues(item.Key, objectSet); if (keyValues.Count() <= 0) { return 0; } return keyValues.Max(); } ) + 1)); }
private IEnumerable <TType> FilterObjectSetsAgainst <TType>() { return(ObjectSets.SelectMany(typeObjectSet => ((IEnumerable)typeObjectSet.Value).OfType <TType>())); }