2010-07-29 4 views
0

Je dois récupérer un ensemble de "TOP n" nombre de lignes à partir d'un DataTable où les lignes de table sont classées par "Colonne X", mais seulement si la valeur de "Colonne X" est supérieure à une valeur de comparaison fournie . Voilà ce que j'ai jusqu'à présent:comment comparer une valeur de colonne de chaîne dans une requête LINQ?

EnumerableRowCollection query = from history in dt.AsEnumerable() 
           where history.Field<string>("Column X") > "Value-To-Compare") 
           orderby history.Field("Column X") 
           select history; 

Mais je continue à obtenir « l'opérateur « > » ne peut pas être appliqué aux opérandes de type « string » et « string » »

Toute pensée?

fuzzlog

Répondre

0

Est-ce que cela fonctionne?

EnumerableRowCollection query = from history in dt.AsEnumerable() 
           where String.Compare(history.Field<string>("Column X"), "Value-To-Compare") > 0 
           orderby history.Field("Column X") 
           select history; 
0

Ian, qui a fait l'affaire, Merci.

Désolé d'avoir répondu à ma question après avoir donné la solution, mais j'avais besoin d'améliorer votre réponse afin qu'elle corresponde à 100% à la demande initiale.

... récupérer un ensemble de "TOP n" nombre de lignes ...

La réponse complète devrait ressembler à ceci:

EnumerableRowCollection query = (
            from history in dt.AsEnumerable() 
            where String.Compare(history.Field<string>("Column X"), "Value-To-Compare") > 0 
            orderby history.Field("Column X") 
            select history 
           ).Take(n); 

"n" est le nombre de lignes spécifié dans "Top n"

Merci encore,

fuzzlog

Questions connexes