Вы можете создать одноэлементный класс для пустых поисков.
using System.Linq;
public sealed class EmptyLookup<T, K> : ILookup<T, K>
{
public static readonly EmptyLookup<T, K> Instance { get; }
= new EmptyLookup<T, K>();
private EmptyLookup() { }
public bool Contains(T key) => false;
public int Count => 0;
public IEnumerable<K> this[T key] => Enumerable.Empty<K>();
public IEnumerator<IGrouping<T, K>> GetEnumerator()
=> Enumerable.Empty<IGrouping<K, V>>().GetEnumerator();
System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => GetEnumerator();
}
тогда вы можете написать код так:
var x = EmptyLookup<int, int>.Instance;
Преимущество создания нового класса заключается в том, что вы можете использовать оператор "is" и проверять равенство типов:
if (x is EmptyLookup<,>) {
// ....
}