2010-06-01 6 views
2

J'ai besoin d'aide pour créer un SQL LINQ avec subsonic. D'abord les notions de base, cela fonctionne très bien:Subsonic 3 - La séquence ne contient aucun élément correspondant

var query = (from o in bd.concelhos 
        orderby o.descricao 
        select o); 

     var results = query.ToList<concelhos>(); 

Cependant, je veux filtrer quelques colonnes et j'ai créé le code suivant:

var query = (from o in bd.concelhos 
        orderby o.descricao 
        select new FilteredConcelhos { id = o.idDistrito + "/" + o.idConcelho, descricao = o.descricao }); 

     var results = query.ToList<FilteredConcelhos>(); 

qui erreurs dans la méthode ToList avec la description " séquence ne contient aucun élément correspondant »

Toute aide serait génial avec ce ...

mise à jour: se trouve que je manquais obtenir les attributs définis dans la classe nouvellement déclarée ... Comme si

public class FilteredConcelhos 
{ 
    public string id { get; set; } 
    public string descricao { get; set; } 
} 

Cette opération efface l'exception, mais la liste qui en résulte est encore tout faux (FilteredConcelhos.id contient rien et FilteredConcelhos.descricao contient des nombres)

Répondre

0

Avez-vous essayé de travailler avec un type anonyme?

var query = (from o in bd.concelhos 
       orderby o.descricao 
       select new { id = o.idDistrito + "/" + o.idConcelho, 
           descricao = o.descricao }); 

var results = query.ToList(); 
+0

problème est que je veux retourner les résultats. Comment puis-je retourner un type anonyme? –

1

Pouvez-vous essayer d'exécuter d'abord le ToList et le select ensuite - alors la sélection est effectuée via linq 2 objets!

+0

Pouvez-vous fournir du code? Comment est-il possible d'exécuter d'abord le ToList puis le select? –

+0

Essayez quelque chose comme: var query = (à partir de o dans bd.concelhos ordre par o.descricao select o); var résultats = query.ToList(). Sélectionnez (o => nouveau FilteredConcelhos {id = o.idDistrito + "/" + o.idConcelho, descricao = o.descricao}); – saintedlama

0

Malheureusement, cela m'est arrivé beaucoup. Je ne sais pas sur les détails de la façon dont fonctionne Linq 2 Object, mais si vous appelez ToList sur l'objet original, comme celui-ci:

from o in bd.concelhos.ToList() 
... 

Il devrait faire l'affaire.