J'ai une requête LINQ:
var list = from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t;
Comment puis-je modifier cette requête pour ne sélectionner que cinq résultats dans la base de données?
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
La solution:
var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5);
Ceci peut également être réalisé en utilisant l'approche Lambda de Linq;
var list = ctn.Items
.Where(t=> t.DeliverySelection == true && t.Delivery.SentForDelivery == null)
.OrderBy(t => t.Delivery.SubmissionDate)
.Take(5);
[Offre une réponse un peu plus descriptive que la réponse fournie par @ Ajni .]
Ceci peut également être réalisé en utilisant LINQ syntaxe fluide :
var list = ctn.Items
.Where(t=> t.DeliverySelection == true && t.Delivery.SentForDelivery == null)
.OrderBy(t => t.Delivery.SubmissionDate)
.Take(5);
Notez que chaque méthode (Where
, OrderBy
, Take
) qui apparaît dans cette instruction LINQ prend un expression lambda en argument. Notez également que la documentation de Enumerable.Take
commence par:
Renvoie un nombre spécifié d'éléments contigus à partir du début d'une séquence.
Additional information
Parfois, il est nécessaire de lier un modèle à une vue modèles et de donner un erreur de conversion de type. Dans cette situation, vous devez utiliser la méthode ToList()
.
_var list = (from t in ctn.Items
where t.DeliverySelection == true && t.Delivery.SentForDelivery == null
orderby t.Delivery.SubmissionDate
select t).Take(5).ToList();
_
Vous pensez peut-être que vous ne vous sentirez pas familier avec la séquence From-> Where-> Select, comme dans le script SQL, c'est comme Select-> De-> Où.
Mais vous ne pouvez pas savoir que dans Sql Engine, il est également analysé dans la séquence de 'From-> Where-> Select', Pour le valider, vous pouvez essayer un script simple.
select id as i from table where i=3
et cela ne fonctionnera pas, la raison en est que le moteur analysera Where avant Select, afin qu'il ne connaisse pas l'alias i dans le Where. Pour que cela fonctionne, vous pouvez essayer
select * from (select id as i from table) as t where i = 3