2017-05-09 1 views
0
var list = new List<stu> { 
    new stu{ id=1,name="123" }, 
    new stu{ id=2,name="a123" }, 
    new stu{ id=3,name="b123" }, 
    new stu{ id=4,name="c123" }, 
    new stu{ id=5,name="d123" }, 
    new stu{ id=6,name="e123" }, 
    new stu{ id=7,name="f123" }, 
}; 

var data = list.Select("name").OrderBy("name"); 

La méthode Sélectionnez le type de retour IEnumerable, puis OrderBy cependant jeter erreurSystem.Linq.Dynamic IEnumerable OrderBy

Aucune propriété ou un champ 'nom' existe dans le type 'String'

Répondre

0

Votre le code est un peu bancal, ou du moins incomplet, donc je n'étais pas capable de comprendre ce que vous faites en dehors de cet extrait. En supposant que vous avez quelque chose comme ceci:

class stu 
{ 
    private int m_id; 
    private string m_name; 

    public int Id { get { return m_id; } set { m_id=value; } } 
    public string Name { get { return m_name; } set { m_name=value; } } 

    public stu(int id,string name) 
    { 
     m_id=id; 
     m_name=name; 
    } 
} 

Il me semble que votre code ne serait pas même compiler sur de nombreux fronts. Cela peut être dû au fait que j'utilise un Visual Studio plus ancien. Pour obtenir ce pour compiler, j'ai changé la première partie comme si (vous remarquerez que je mélange l'ordre alpha pour vous permettre de voir que le tri se passe réellement):

var list = new List<stu> 
{ 
    new stu(1,"123"), 
    new stu(2,"f123"), 
    new stu(3,"b123"), 
    new stu(4,"e123"), 
    new stu(5,"d123"), 
    new stu(6,"c123"), 
    new stu(7,"a123"), 
}; 

Après cela, il semble de votre code comme si vous attendiez une liste de stu, mais récupérez une liste de chaînes. Ce que je ferais ici, c'est commander la liste en premier, puis sélectionner et récupérer une liste de chaînes triée. Si ce que vous voulez vraiment revenir sur le select est une liste triée de stu alors vous modifieriez comme cela. Faites-moi savoir si votre intention me manque. Je vous prie de me contacter.