public T TryGetItem(ItemTemplate template, System.Collections.Generic.IEnumerable <EffectBase> effects) { System.Collections.Generic.IEnumerable <T> source = from entry in this.Items.Values where entry.Template.Id == template.Id && effects.CompareEnumerable(entry.Effects) select entry; return(source.FirstOrDefault <T>()); }