using System.Collections.Generic;
public static void Main(string[] args)
var lista = new List<Pessoa> { new Pessoa { Nome = "André", Sobrenome = "Vargas" }
, new Pessoa { Nome = "Marco", Sobrenome = "Quintal" }
, new Pessoa { Nome = "José" , Sobrenome = "Marco" }
var listaFiltrada = lista.Where(x => new[] { x.Nome, x.Sobrenome }.Any(s => s.Contains("Marco")));
var listaFiltrada2 = lista.Where(m => m.GetType().GetProperties().Any(x => x.GetValue(m, null) != null && x.GetValue(m, null).ToString().Contains("Marco"))).ToList();
foreach (var item in listaFiltrada2)
Console.WriteLine(string.Format("{0} {1}", item.Nome, item.Sobrenome));
public string Nome { get; set; }
public string Sobrenome { get; set; }