2009-11-24 3 views
0

Je crée un gridview qui sera peuplée basée sur une déclaration de LINQ, sql est la suivante:LINQ QUERY: Prenez() en fonction de la valeur textbox

SELECT  TOP 10 IDDesc, UnitUserfield1, UnitUserfield2, ProductPercentage 
FROM   tblOnlineReportingCOMPLETEWeights 
WHERE  (MaterialLevel = 'Primary') AND (MaterialText = 'Paper') 
ORDER BY ProductPercentage DESC 

Maintenant, ce que je voudrais faire est laissez l'utilisateur spécifier le Top 10, donc c'est essentiellement un "Top x" ceci étant défini dans une zone de texte, c.-à-d. 50 dans la zone de texte, la requête linq est exécutée et la grille affiche le top 50.

I comprendre que l'utilisation de Take est la zone que je veux regarder, est-ce correct? Est-ce seulement possible?!

Toutes les pensées, grandement appréciées. PS: excuses pour poser des questions épaisses, je suis très nouveau à tout cela!

Répondre

0

Je vous remercie tous beaucoup, je suis allé avec les éléments suivants:

{ 
    ORWeightsDataClassesDataContext db = new ORWeightsDataClassesDataContext(); 
    int max = 0; 
     if (int.TryParse(txtbxHowMany.Text, out max)) 
     { 
    var queryV = db.tblOnlineReportingCOMPLETEWeights 
       .Where(x => x.MaterialLevel == "Primary" && x.MaterialText == "Paper") 
       .OrderByDescending(x => x.ProductPercentage).Take(max); 

    GridView1.DataSource = queryV; 
    GridView1.DataBind(); 
     } 
} 

Il fonctionne un régal.

Merci beaucoup, très reconnaissant et maintenant mon site est enfin réuni ... Je me sens liek célébrant ... pub quelqu'un ?!

0

Vous avez raison. Prenez l'entrée de l'utilisateur et alimentez-la pour prendre. Ça fera l'affaire.

int howMany = Convert.ToInt32 (HowManyTextBox.Value); 

var queryResult = /*.....*/.Take (howMany); 
+0

Excellent, maintenant je vais essayer de changer mon sql en linq ... Je peux être un jour !!! – MrDean

+0

tblOnlineReportingCOMPLETEWeights.Where (x => x.MaterialLevel == "Primaire" && x.MaterialText == "Papier"). OrderByDescendant (x => x.ProductPercentage) .Take (10) –

0
int max = 0; 

if (Int.TryParse(TextBox1.Text, out max) 
{ 
    var q = (from tbl where ... orderby ... desc).Take(max); 
} 

Le long de ces lignes