Pregunta

he escrito una pequeña consulta y en LINQPad su trabajo bien pero (véase más adelante) Los aranceles no se devuelve como IQueryable, ¿alguien sabe cómo solucionar este problema?

Básicamente ver aranceles = new ....,

from v in House
join gvt in
    (from t in MyTariffs where t.Id == 3 select t)
on v.IdTariff equals gvt.Id
select new
{
   Id = v.Id,
   Tariffs = new
   { 
     Deposit = gvt.CurrentDeposit
   }
}

Yo probé esto, pero su válida porque GVT no es una tabla o algo?

from v in House
join gvt in
    (from t in MyTariffs where t.Id == 3 select t)
on v.IdTariff equals gvt.Id
select new
{
   Id = v.Id,
   Tariffs = from x in gvt   // NOTICE i am doing from x in gvt... But it fails..
   select new
   { 
     Deposit = gvt.CurrentDeposit
   }
}

Por supuesto GVT contiene sólo los valores que quiero porque tiene la unión interna ...

lo que podía hacer sólo tire directamente de mis MyTariffs (que funciona vuelve IQueryable), pero luego tengo demasiada información, ya que no tomando en consideración el uno a que he hecho en GVT?

from v in House
join gvt in
    (from t in MyTariffs where t.Id == 3 select t)
on v.IdTariff equals gvt.Id
select new
{
   Id = v.Id,
   Tariffs = from x in MyTariffs // THIS has nothing to do with my join
   select new
   { 
     Deposit = gvt.CurrentDeposit
   }
}
¿Fue útil?

Solución

Seleccione los datos en una subconsulta - ¿está seguro de que Id == 3 y ID == v.IdTariff? Si ese es realmente el caso, entonces se podría añadir una cláusula dónde la consulta externa para seleccionar sólo cuando v v.IdTariff == 3. Estoy suponiendo, sin embargo, que todos ellos desea.

var q = from v in House
        select new {
            Id = v.Id,
            Tariffs = (from g in MyTariffs
                       where g.Id == v.IdTariff
                       select g.CurrentDeposit)
        };

ejemplo Agrupados (sin compilar / no probado), en respuesta a sus comentarios.

var q = from v in House
        join g in (from t in MyTariffs where t.Id == 3 select t)
        group by v.Id into gvt
        select new {
            Id = gvt.Key,
            Tariffs = gvt.g
        };
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top