El problema esta en la mezcla de objetos anonimos con IQueryable sin hacer uso de un tipo. El IQueryable no tiene Where ni nada de eso porque no es IEnumerable. El IQueryable<T> si hace esta funcion pero tienes que mandar el tipo exacto que el metodo buscartodasUnidadesServicio devolvera.
Haslo con el tipo correcto en el metodo y afuera haces uso del objeto anonimo.
Seria así:
Código C#:
Ver originalpublic IQueryable<UnidadNegocio> buscartodasUnidadesServicio()
{
return from tblCity in p.UnidadNegocios
join indicador in p.Indicadors on tblCity.UnidadNegocioId equals indicador.UnidadNegocioId
join uservicios in p.UnidadServicios on indicador.UnidadServicioId equals uservicios.UnidadServicioId
select tblCity;
}
Esto aun no es ejecutado a la base de datos, simplemente es un query. Para hacer uso de el desde afuera es como quieres hacerlo yt haslo por linq no lampa. y haces el select que quite:
Código C#:
Ver originalvar states = from x in p.buscartodasUnidadesServicio()
Where x.EmpresaId == Convert.ToInt32(EmpresaId)
select new {x.EmpresaId,x.UnidadServicio.UnidadServicioId,x.UnidadServicio.Descripcion};
Es un seudocodigo pero la idea esta allí.