J'ai actuellement cette requête Linq:Comment Linq-ify cette requête?
return this.Context.StockTakeFacts
.OrderByDescending(stf => stf.StockTakeId)
.Where(stf => stf.FactKindId == ((int)kind))
.Take(topCount)
.ToList<IStockTakeFact>();
L'intention est de retourner tous les faits pour la topCount de StockTakes mais je peux voir que je n'obtenir le numéro de topCount des faits.
Comment linq-ify cette requête pour atteindre mon objectif?
Je pourrais utiliser 2 requêtes pour obtenir le top-topCountStakeId, puis faire un "entre" mais je me demandais quelles astuces Linq pourrait avoir.
C'est ce que j'essaie de battre. Notez qu'il s'agit vraiment plus d'apprendre que de ne pas être capable de trouver une solution. Aussi préoccupé par la performance pas pour ces questions, mais en général, je ne veux pas juste des choses faciles et découvre qu'il se débat dans les coulisses. Comme quelle est la pénalité de cette clause contient dans ma deuxième requête ci-dessous?
List<long> stids = this.Context.StockTakes
.OrderByDescending(st => st.StockTakeId)
.Take(topCount)
.Select(st => st.StockTakeId)
.ToList<long>();
return this.Context.StockTakeFacts
.Where(stf => (stf.FactKindId == ((int)kind)) && (stids.Contains(stf.StockTakeId)))
.ToList<IStockTakeFact>();
Que voulez-vous dire Linqify? Il est déjà linq – manojlds
@manojlds. Je suppose que _ "Linqify" _ fait fonctionner linq, bien que je n'ai pas vérifié le dictionnaire ... =) – gdoron
pourquoi ne pas SELECT fait, et appliquer Take (topCount) à StockTake. Vous devrez joindre les tables dans le champ Id. – Doomsknight