2010-08-26 4 views
3

J'ai une requête LINQ simple qui va à l'encontre d'une collection.liaison tardive dans linq

Dim oList = From w In Os 
       Order By w.ClassTitle Descending 
     Select w 

Ce que j'aimerais pouvoir faire, c'est passer à cela, qu'il soit descendant ou ascendant. Je ne suis pas sûr de savoir comment faire ça.

De plus, si je devais avoir une clause where ici .. disons

where w.ClassTitle = "Test" 

Comment puis-je faire le « test afin que je puisse le transmettre dans la requête LINQ.

Merci . shannon

Répondre

1

I ne pense pas que vous pouvez passer que « dans » cette requête, mais vous pouvez faire la requête régulière

var oList = from w in Os 
      select w 

Ensuite, lorsque l'utilisateur prend une action que vous pouvez simplement faire une commande par après ce fait.

oList.OrderBy(o => o.ClassTitle) 

ou

oList.OrderByDescending(o => o.ClassTitle) 

MISE À JOUR:

En ce qui concerne la liaison tardive, ce que vous pouvez faire est d'écrire une méthode qui exécuterait la clause Where. Peut-être que l'utilisation d'une méthode d'extension pourrait fonctionner. Je suis plus familier avec C# donc ma syntaxe peut-être un peu hors

public static IEnumerable<Os> ExecuteWhere (this Table<Os> table, Expression<Func<Os, bool>> predicate) 
{ 
    return table.AsQueryable<Os>().Where(predicate); 
} 

Puis l'appeler comme ceci:

oList.ExecuteWhere(a => a.ClassTitle == "Test") 
+0

qui fonctionne pour la commande .. maintenant pour essayer de comprendre NetSides façon de relier le où – jvcoach23

+0

se demandait si vous pourriez expliquer un peu plus loin. en vb je dois utiliser le olist.orderby (fonction (o) o.classtitle) J'essaie de google autour et de découvrir ce que la partie fonction signifie pour mieux comprendre cela .. mais n'ayant pas beaucoup de chance. J'adorerais mieux comprendre ce que cela signifie. Merci shannon – jvcoach23

+0

ne jamais oublier .. je pense que j'ai trouvé ma réponse ... http://msdn.microsoft.com/en-us/library/bb534966.aspx. Type: System.Func (Of TSource, TKey) Une fonction pour extraire une clé d'un élément .... – jvcoach23

0

Utiliser la syntaxe de la délégation Par exemple,

Dim oList = Os.Where(....).OrderBy(...)... 
+0

Même si je suis d'accord que l'utilisation des méthodes d'extension plutôt que la syntaxe LINQ fait ce genre de problème plus clair, je ne pense pas que vous avez vraiment résolu son problème. –

+0

Comme la requête devra choisir d'utiliser OrderBy ou OrderByDescending, cela ne résoudra peut-être pas le problème. – stuartd

+2

J'ai vu que, fondamentalement, il a un problème de syntaxe de code, l'utilisation de cette syntaxe, qui est plus claire, le rendra facile à comprendre et il le résoudra lui-même. – NetSide

Questions connexes