The type or namespace name 'T' could not be found

You have to put the type argument on the function itself.

public static IEnumerable<T> Filter1<T>(...)

public static class Utility 
{  
    public static IEnumerable<T> Filter1<T>( // Type argument on the function
       this IEnumerable<T> input, Func<T, bool> predicate)  
    {  

If you dont care if its an extension method or not, you can add a generic constrain to the class. My guess is you want the extension method.

public static class Utility<T> // Type argument on class
{  
    public static IEnumerable<T> Filter1( // No longer an extension method
       IEnumerable<T> input, Func<T, bool> predicate)  
    {  

You need to declare T, which occurs after the method name or class name. Change your method declaration to :

public static IEnumerable<T> 
    Filter1<T>(this IEnumerable<T> input, Func<T, bool> predicate) 

I had the same error, but solution required was slightly different. I needed to change this:

public static void AllItemsSatisy(this CollectionAssert collectionAssert, ICollection<T> collection, Predicate<T> predicate) 
{ ... }

To this:

public static void AllItemsSatisy<T>(this CollectionAssert collectionAssert, ICollection<T> collection, Predicate<T> predicate) 
{ ... }