using System.Collections.Generic;
public static void Main()
string pesquisaEmpresaOuCategoria = "1";
var empresas = new List<Empresa>()
new Empresa { Id = 4, Nome = "Empresa 3", CategoriaEmpresa = new List<EmpresaCategoria>() {
new EmpresaCategoria { EmpresaId = 4, CategoriaId = 1, Categoria = new Categoria { Id = 1, Nome = "Categoria 1"} }
new Empresa { Id = 5, Nome = "Empresa 2", CategoriaEmpresa = new List<EmpresaCategoria>() {
new EmpresaCategoria { EmpresaId = 5, CategoriaId = 2, Categoria = new Categoria { Id = 2, Nome = "Categoria 2"}}
new Empresa { Id = 6, Nome = "Empresa 1", CategoriaEmpresa = new List<EmpresaCategoria>() {
new EmpresaCategoria { EmpresaId = 6, CategoriaId = 3, Categoria = new Categoria { Id = 3, Nome = "Categoria 3"}}
var listaEmpresas = empresas.Where(x => x.Nome.Contains(pesquisaEmpresaOuCategoria) || x.CategoriaEmpresa.Any(c => c.Categoria.Nome.Contains(pesquisaEmpresaOuCategoria))).ToList();
foreach(var empresa in listaEmpresas)
Console.WriteLine(empresa.Nome);
public int Id { get; set; }
public string Nome { get; set; }
public string Telefone { get; set; }
public ICollection<EmpresaCategoria> CategoriaEmpresa { get; set; }
public int Id { get; set; }
public string Nome { get; set; }
public ICollection<EmpresaCategoria> CategoriaEmpresa { get; set; }
public class EmpresaCategoria
public int Id { get; set; }
public int CategoriaId { get; set; }
public int EmpresaId { get; set; }
public virtual Categoria Categoria { get; set; }
public virtual Empresa Empresa { get; set; }