Comment écrire une instruction LINQ qui retourne RWIPH Numéro d'élément avec ID == quelque chose? P>
3 Réponses :
Vous devriez pouvoir utiliser les méthodes de skip et prendre des méthodes d'extension pour accomplir cela.
Par exemple, si vous voulez la ligne 10: P>
from c in customers
where c.Region == "somewhere"
orderby c.CustomerName
select new {c.CustomerID, c.CustomerName}
.Skip(9).Take(1);
Je ne pense pas que ce soit la réponse à la question qui est posée, mais elle a été levée, alors je la quitte ici.
Comment projeter un numéro de ligne dans les résultats de la requête LINQ
Comment projeter un numéro de ligne dans les résultats de la requête LINQ a> p>
Cette surcharge de Select n'est pas supportée à Linq à SQL. Va lancer une notaupportedexception ().
Il n'y a pas de mauvaise façon de faire cela que je suis au courant. Vous devriez tirer la requête entière vers le client et vous pourriez projeter dans les numéros de ligne. Comme alternative, vous pouvez écrire une procédure stockée qui utilise Row_Number, puis frappez ce processus de Linq à SQL.
Dans votre cas, la seule façon de pouvoir pouvoir le faire serait la clientèle. N'oubliez pas que la déclaration suivante ne va pas le faire sur le serveur, mais tirez votre table entière et obtenez l'index sur le client ... P>
using (var dc = new DataClasses1DataContext())
{
var result = dc.Users
.AsEnumerable() // select all users from the database and bring them back to the client
.Select((user, index) => new // project in the index
{
user.Username,
index
})
.Where(user => user.Username == "sivey"); // filter for your specific record
foreach (var item in result)
{
Console.WriteLine(string.Format("{0}:{1}", item.index, item.Username));
}
}
Merci, Scott. Donc, je suppose que vous allez tolérer () cela, puis indexof ()?
Bien sûr, j'ai également ajouté un exemple de la manière dont vous pouvez le faire avec la surcharge de SELECT qui vous donne un index.
J'essayais de trouver une solution à l'aide de .Trahewhile (XXX) .Count () code>, mais il ne peut également pas être traduit en SQL et pourrait avoir des résultats médiocres / inappropriés lorsque l'enregistrement n'a pas existe du tout.
dc.pictures .Sélectionnez (p => p.isbest) .asenumerable () .Sélectionnez ((p, i) => nouveau {p.pictureID, i}). Où (p.pictureid = id); Je ne suis pas que Dieu avec Linq, je ne sais pas pourquoi mais p.pictureID n'est pas accessible. peux-tu me dire pourquoi?
Débarrassez-vous de votre sélection () qui vient avant l'Asenumerable (). L'imageId n'est pas là parce que vous avez seulement sélectionné Isbest dans votre sélection initiale.
Si j'ignore le profileur SQL Server, je vois que cette solution effectue une sélection complète * commander par ... ensuite après avoir déplacé le résultat sur local, l'instruction SELECT est effectuée. Pas très efficace