Frage

ich eine kleine Abfrage geschrieben und in LINQPad seine Arbeit gut, aber (siehe unten) Tarife nicht als IQueryable zurück, weiß jemand, wie dieses Problem beheben?

Im Grunde genommen sehen Tarife = 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
   }
}

habe ich versuchen, dies aber sein ungültig, weil gvt keinen Tisch oder etwas ist?

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
   }
}

Natürlich gvt enthält nur die Werte ich will, weil es die innere Verknüpfung ...

Ich kann ziehen nur direkt von meinem MyTariffs (was es gibt IQueryable funktioniert), aber dann habe ich zu viele Informationen als nicht berücksichtigt wird die Verbindung, die ich in gvt tat?

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
   }
}
War es hilfreich?

Lösung

Wählen Sie die Daten in einer Unterabfrage - sind Sie sicher, dass Id == 3 und Id == v.IdTariff? Wenn das wirklich der Fall ist, dann könnte man hinzufügen, eine where-Klausel der äußeren Abfrage nur v auszuwählen, wenn v.IdTariff == 3. Ich gehe davon aus, aber, dass Sie wollen sie alle.

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

Gruppiert Beispiel (kompilierten / ungetestet), als Antwort auf Ihre Kommentare.

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
        };
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top