Question

J'écrit une petite requête et dans son LINQPad fonctionne bien, mais (voir ci-dessous) Les tarifs ne sont pas retourné comme IQueryable, personne ne sait comment résoudre ce problème?

voir Fondamentalement tarifs = 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
   }
}

J'ai essayé cela, mais son invalide parce gvt n'est pas une table ou quelque chose?

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

Bien sûr gvt ne contient que les valeurs que je veux, car il a la jointure interne ...

Je pouvais faire il suffit de tirer directement de mes MyTariffs (qui fonctionne retourne IQueryable) mais j'ai trop d'informations comme ne prenant pas en considération la jointure que je l'ai fait dans 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
   }
}
Était-ce utile?

La solution

Sélectionnez les données dans un sous-requête - êtes-vous sûr que Id == 3 et Id == v.IdTariff? Si tel est vraiment le cas, alors vous pouvez ajouter une clause where à la requête externe pour sélectionner uniquement v lorsque v.IdTariff == 3. Je suppose, cependant, que vous voulez tous.

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

exemple Groupés (décompilé / non testé), en réponse à vos commentaires.

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
        };
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top