J'ai un IEnumerable de factures, ces factures ont des éléments de campagne. Ces éléments de campagne ont la priorité. Je programme une variété de stratégies pour appliquer automatiquement de l'argent sur ces éléments de campagne et l'un d'eux me cause des problèmes. Mon modèle a consisté à préparer une instruction linq pour ordonner les éléments de ligne des factures, puis itérer sur la requête linq en appliquant de l'argent dans l'ordre jusqu'à ce que je sois épuisé.Tough Linq Query
Un exemple de cette déclaration LINQ pour la stratégie la plus simple, payer chaque ligne par priorité et la date d'échéance, est indiqué ci-dessous:
from lineItem in invoices.SelectMany(invoice => invoice.LineItems)
orderby lineItem.Priority, lineItem.DueDate
select lineItem;
L'une des stratégies consiste à appliquer l'argent à l'élément restant le plus ancien avec une priorité donnée, dans l'ordre de priorité, puis passer à la plus ancienne suivante de chaque priorité.
EDIT: Exemple de la façon dont on pourrait commencer à la requête que je demande -
from lineItem in invoices.SelectMany(invoice => invoice.LineItems)
group lineItem by lineItem.Priority into priorities
orderby priorities.Key
select priorities.OrderBy(item => item.DueDate);
Nous avons maintenant « seaux » d'articles en ligne avec la même priorité, commandés par date d'échéance dans le seau. J'ai besoin d'extraire le premier élément de chaque seau, suivi par le second, etc. jusqu'à ce que j'ai commandé tous les articles. Je voudrais effectuer cette commande purement en linq.
Quelqu'un peut-il penser à un moyen d'exprimer cela entièrement dans linq?
Vous venez de le faire! Que demandez-vous que votre requête ne fait pas déjà? – Timwi
@Timwi - Je pense que l'exemple montre une stratégie simplifiée - la stratégie réelle requise est résumée dans un seul paragraphe sous le code. @ marr75 il serait vraiment utile si vous pouviez nous donner un exemple concret - comme par exemple 'LineItems' et l'ordre dans lequel ils devraient être achetés en utilisant la nouvelle stratégie. –
La première requête fait exactement ce que les états de paragraphe est requis. La deuxième requête (après le "Edit") fait un certain groupement fantaisie qui ne semble pas nécessaire. – Timwi