Home > Enterprise >  Extension Method for List to compute WhereNot
Extension Method for List to compute WhereNot

Time:10-28

I have one requirement to implement the extension method for List to find out the WhereNot. I am not suppose to use any existing Linq extension method like where etc.

For Example

IEnumerable<int> list = new List<int> {1,2,3,4,5,6};
var whereNotListInt = list.WhereNot((num) => num > 3));

foreach(int i in whereNotListInt)
{
   Console.WriteLine(i);
}

Output:- 1 2 3

IEnumerable<string> list = new List<string> {"Cat", "Dog"};
var whereNotListStr = list.WhereNot((str) => str.StartsWith("D")));

foreach(string str in whereNotListStr )
{
   Console.WriteLine(str);
}

Output: Cat

I tried below solution, but not able to figure out how to call the function.

public static class Utility
    {
        public static IEnumerable<T> WhereNot<T>(this IEnumerable<T> list, Func<T, bool> func)
        {
            foreach (var item in list)
            {
                yield return func(item);
            }    
        }
    }

CodePudding user response:

Since you only want to return items for which the condition is not true, only return each item when func() returns false on that item.

public static class Utility
{
    public static IEnumerable<T> WhereNot<T>(this IEnumerable<T> list, Func<T, bool> func)
    {
        foreach (var item in list)
        {
            if (!func(item))
                yield return item;
        }    
    }
}
  • Related