2015-09-12 1 views
1

Ma table a plus de 15 colonnes et je veux seulement récupérer four de ces colonnes pour stocker en mémoire. Cependant en essayant la méthode ci-dessous, donne l'erreur cannot explicitly convert List to IEnumerable. Est-ce aussi la bonne approche? Avoir le sentiment que je manque une clause where ou quelque chose? CompanyID est l'index.Linq to list, sélectionnez seulement quatre colonnes de DB?

IEnumerable<Company> company = _db.Company.Select(a => new 
{ 
    CompanyId = Convert.ToString(a.CompanyId), 
    CompanyType = a.CompanyType, 
    CompanyName = a.CompanyName, 
    Email = a.Email 
}).ToList(); 

Répondre

2

Vous créez un Anonymous Type avec votre déclaration Select et vous ne pouvez pas convertir List<definedAnonymousType>-IEnumerable<Company>.

Utilisez var au lieu de IEnumerable<Company>.

var company = _db.Company.Select(a => new 
{ 
    CompanyId = Convert.ToString(a.CompanyId), 
    CompanyType = a.CompanyType, 
    CompanyName = a.CompanyName, 
    Email = a.Email 
}).ToList(); 

alors votre type company sera List<definedAnonymousType>.

0

vous pouvez créer CompanyLite DTO avec les propriétés exactes que vous voulez et convertir les données que

var companyLite = _db.Company.Select(a => new CompanyLite 
{ 
    CompanyId = Convert.ToString(a.CompanyId), 
    CompanyType = a.CompanyType, 
    CompanyName = a.CompanyName, 
    Email = a.Email 
}).ToList(); 
+0

puis-je savoir la raison de vote down – Iceburg

+0

Je suppose que la downvote est due à cela est inutile - le cadre sera créer une classe à l'exécution lorsque vous utilisez un type anonyme, comme indiqué dans la réponse de @ dotctor. Donc, votre réponse n'est pas fausse en soi, ce n'est pas aussi utile que l'autre réponse. –

+0

Merci pour la réponse Tieson T. j'apprécie vraiment cela. Je pensais qu'il y avait un problème dans ma réponse. mais de toute façon c'est comme une manière différente d'approcher la même chose. ex s'il a besoin d'une implémentation de classe concrète en ce moment plutôt que de la convertir à nouveau il peut utiliser directement ceci. – Iceburg