Search through multiple lists, but have functions that do that in parts
I would suggest that you don't use a repository at all. You already have a library that handles abstracting the database. You don't need the repository abstraction. And if you need some kind of abstraction, use a query object.

Some extensions are handy to build the query:

public static class AddressQueryExtensions
{
    public static IQueryable&lt;Address&gt; WhereStreetContains(this IQueryable&lt;Address&gt; query, string street)
    {
        return query.Where(address =&gt; address.Street.Contains(street));
    }

    public static IQueryable&lt;Address&gt; WhereCityContains(this IQueryable&lt;Address&gt; query, string city)
    {
        return query.Where(address =&gt; address.City.Contains(city));
    }

    public static IQueryable&lt;Address&gt; WhereStateContains(this IQueryable&lt;Address&gt; query, string state)
    {
        return query.Where(address =&gt; address.State.Contains(state));
    }

    public static IQueryable&lt;Address&gt; WhereZipContains(this IQueryable&lt;Address&gt; query, string zip)
    {
        return query.Where(address =&gt; address.Zip.Contains(zip));
    }
}


These can be combined however you want:

var addresses = DbSet
    .WhereStreetContains(street)
    .WhereCityContains(city)
    .WhereZipContains(zip)
    .Where(x =&gt; x.State == null)
    .ToList();


Some reading regarding repositories and ORMs.

https://lostechies.com/jimmybogard/2012/09/20/limiting-your-abstractions/
https://lostechies.com/jimmybogard/2012/10/08/favor-query-objects-over-repositories/
https://ayende.com/blog/3955/repository-is-the-new-singleton