Straight ahead. For a given element from the index, check that for all filters it is true that this element contains a filter. In this case, simply select all the elements from the index for which this condition is true.
index.Where(item =>
filters.All(filter => item.FilterNames.Contains(filter)))
, , .
index.Where(item =>
filters.All(filter =>
(filter.Length > 0 ) || (item.FilterNames.Contains(filter))))
LINQ to Objects, , , , , LINQ to SQL.