2017-04-19 2 views
0

J'ai déclaré un modèle dans ma .cs la pageImpossible de convertir AnonymousType # 1 ti IEnumerable

public class InstrumentDetails 
{ 
    public long PullNo { get; set; } 
    public string Description { get; set; } 
    public int New { get; set; } 
    public int LN { get; set; } 
    public int PR { get; set; } 
    public int Any { get; set; } 
} 

Après que je suis en train de récupérer des données comme la façon suivante:

IEnumerable<InstrumentDetails> instrumentdetails = (from p in NemcDb.tblPulls 
    join 
    pi in NemcDb.tblPullInstruments 
    on 
    p.PullId equals pi.PullId 
    join 
    i in NemcDb.tblInstruments 
    on 
    pi.InstrumentCode equals i.InstrumentCode 
    select new 
    { 
     PullNo = p.PullNo.Value, 
     InstrumentType = i.Description, 
     New = pi.NewQuantity, 
     LN = pi.LNQuantity, 
     PR = pi.UsedQuantity, 
     Any = pi.AnyQuantity 
    }).Where(i => i.PullNo.ToString() == item); 

Mais il me donne la erreur

Impossible de convertir 'System.Linq.IQueryable < AnonymousType # 1>' à « System.Collections.Generic.IEnumerable <> '. Une conversion explicite existe (manque-t-il une distribution?)

Où est-ce que je me trompe? ... Je n'arrivais pas à m'en sortir .... S'il vous plaît, aidez-moi.

+1

Appelez 'ToList' ou' ToArray' après votre 'Where'. –

+0

@KennethK. Cela ne changera rien. – Servy

+0

Cela n'a pas fonctionné ... de toute façon merci pour l'aide – Arka

Répondre

0

La réponse serait:

  IEnumerable<InstrumentDetails> instrumentdetails = (from p in NemcDb.tblPulls 
                  join 
                  pi in NemcDb.tblPullInstruments 
                  on 
                  p.PullId equals pi.PullId 
                  join 
                  i in NemcDb.tblInstruments 
                  on 
                  pi.InstrumentCode equals i.InstrumentCode 
                  select new InstrumentDetails 
                  { 
                   PullNo = p.PullNo.Value, 
                   InstrumentType = i.Description, 
                   New = pi.NewQuantity, 
                   LN = pi.LNQuantity, 
                   PR = pi.UsedQuantity, 
                   Any = pi.AnyQuantity 

                  }).Where(i => i.PullNo.ToString() == item).ToList(); 

    } 

Comment idiot de ma part ............

+1

D'autres personnes ont répondu à votre question correctement, et au lieu de leur donner du crédit, vous y avez répondu vous-même avec la même information. – Aaron

+0

10 secondes différentes entre les réponses, pourrait être une coïncidence, Voting Sami réponse parce que cela explique la cause du problème – bradbury9

+0

@Aaron Cette réponse a été postée * avant * l'autre réponse. – Servy

3

Vous ne dites pas que vous voulez un objet de type InstrumentDetails, vous créez un type anonyme. Changez select new { ... en select new InstrumentDetails { ... puis appelez également ToList(), ToEnumerable() ou ToArray() pour que la requête soit réellement exécutée.