I'm trying to implement a basic Pipe and Filter pattern and testing it out in LinqPad 5.

The class that contains the extension methods looks as follows:

public static class MyExtensions
{
    public static IQueryable<PortfolioSection> AreNotDeleted(this IQueryable<PortfolioSection> portfolioSections)
    {
        return portfolioSections.Where(portfolioSection => portfolioSection.IsDeleted == false);
    }
    
    public static int AddMe(this int number, int newNumber){
        return number + newNumber;
    }
}  

In the Main section of linqpad I do the following:

void Main()
{
    PortfolioSections.AreNotDeleted().Dump();
}  

I've also tried to add AsQueryable to confirm this is not the issue:

void Main()
{
    PortfolioSections.AsQueryable().AreNotDeleted().Dump();
}  

In both cases I get the exception:

CS1929 'DbSet' does not contain a definition for 'AreNotDeleted' and the best extension method overload 'MyExtensions.AreNotDeleted(IQueryable)' requires a receiver of type 'IQueryable'

I'm following this article to find out more about the Pipe and Filter pattern and originally tried this out in my c# project, but switched to LinqPad when I discovered that the results of my query did not change when I included the extension method AndAreNotDeleted. In my project though there are no exceptions, LinqPad on the other hand throws the exception above.

Any ideas where I went wrong?

1

There are 1 best solutions below

0
On BEST ANSWER

My connection type in Linpad is based on my project's Persistence library containing the DbContext. I had originally copied in all my domain classes representing the data entities forgetting that I simply needed to hit F4 and add a using statement pointing to my library containing the domain classes. This seems to have resolved all my issues in Linqpad and I'm now able to implement the pattern.