renvoyer rownumber () dans le cadre de la requête

J'ai une requête SQL qui est returnnée à un dtStories datatable (c #).

with records as (select row_number() over (order by pages.createdate desc)as 'row', field1, field2...etc. from records where row between 1 and 7 

(Il y a d'autres cas où j'ai besoin de la "nième" ligne ou entre les lignes x et y, donc je n'utilise pas une simple sélection du top 7).

J'essayais de faire des choses légèrement différentes en fonction de la ligne, donc j'interrogeais la ligne [0] en pensant que le numéro de la ligne serait. Mais, en vérifiant les returns dans mon SQL Server, elle returnne seulement le champ 1, le champ 2 … etc qui est évidemment pourquoi mon

 foreach (Datarow row in dtStories) { if (row[0].ToSsortingng() == "1") { ... } } 

ne fonctionne pas.

Est-il un moyen de s'assurer que la ligne est returnnée dans le cadre de la requête SQL dans le DataTable, ou en utilisant c # suffit d'accéder à row1, row2 etc. de la table?

vous ne montrez pas toute l'instruction select, il est donc IMPOSSIBLE de savoir ce que vous faites réellement. Nous pouvons le dire parce que les ( et ) ne correspondent pas.

Je m'attends à ce que votre code (mis en retrait pour clarifier) ​​ressemble à ceci:

 with records as ( select row_number() over (order by pages.createdate desc)as 'row', field1, field2 -- ... from original_table ) select field1, field2 -- ... from records where row between 1 and 7 

maintenant il devrait être clair … pour inclure la colonne de ligne dont vous avez besoin dans la 2ème list de sélection (en dehors du CTE)

 with records as ( select row_number() over (order by pages.createdate desc)as 'row', field1, field2 -- ... from original_table ) select row, -- here! field1, field2 -- ... from records where row between 1 and 7 

ne comprends pas si votre with records .. est un server sql ou un code c #. Ne regarde pas sql parce que n'a pas de parenthèse fermante et n'a pas choisi.

WITH est appel CTE, et CTE sont créés temporairement en memory.

Tu veux quelque chose comme

  with records as ( select row_number() over .... ) SELECT * FROM records