J'ai une classe Facture que je veux avoir plusieurs paquets, mais je veux seulement que ces paquets soient là s'ils ont été expédiés plus tard que le dernier enregistrement dans l'enregistrement. J'ai utilisé "into" pour inclure les autres groupes dans l'objet, mais je n'arrive pas à joindre les paquets spécifiques.linq à sql "dans" conditionnel avec select
from invoice in invoices
join item in InvoiceItems on invoice.InvoiceId equals item.InvoiceId into items // Gives the item collection
join package in packages on invoice.InvoiceId equals package.InvoiceId // only want the packages that satisfy the condition...
where package.ShipDate > (subquery)
Cette requête fonctionnerait, sauf que je recevrais plusieurs fois les mêmes factures s'il y a plusieurs paquets. Si j'ajoute "en paquets" à la fin de la jointure, je ne sais pas comment obtenir seulement les paquets qui satisfont la deuxième condition.
Le sous-requête est:
(from lastSentRecord in records
where lastSentRecord.InvoiceID == invoice.InvoiceID
orderby lastSentRecord.SendDateTime descending
select lastSentRecord.SendDateTime ?? new DateTime()).First()
La partie importante de la structure de classe est
Invoice --- InvoiceID
Package --- InvoiceID, ShipDate
Record --- InvoiceID, SendDateTime, EmailType
Où 'Record' entre? En particulier, cela dépend-il de «facture»? –
pouvez-vous fournir la structure de vos ensembles de données? – m4ngl3r
@JonSkeet L'enregistrement est une notification disant que nous devons envoyer un e-mail. Il a InvoiceID, EmailType, SentDate. Je vais ajouter la sous-requête à la question –