Given this code:
IEnumerable FilteredList() { foreach( object item in FullList ) { if( IsItemInPartialList( item ) )
The yield return statement allows you to return only one item at a time. You are collecting all the items in a list and again returning that list, which is a memory overhead.