As I am not sure that predicate instance has an And method, I suggest you use this code:
var list = list1.AsQueryable();
foreach (string str in SearchItems)
{
list = list.Where(p => p.Name.ToLower().Contains(str.ToLower()));
}
listBox1.ItemsSource = list.ToList();