Cette question est similaire à celui-ci:Obtenir les lignes d'une table et dernière 1 ligne d'une table associée, dans LINQ
LINQ to SQL: GroupBy() and Max() to get the object with latest date
Mais j'ai une table que je veux revenir un grand nombre de lignes de. Sa clé primaire est utilisée comme clé étrangère dans une seconde table. Pour chaque ligne renvoyée à partir de la première ligne, je souhaite également renvoyer (dans le même jeu de résultats) la dernière ligne (dans ce cas, ordonnée par un champ datetime) 1 ligne.
Comment cela serait-il construit dans LINQ en utilisant C#?
Le meilleur que j'ai est:
var instances = from i in ContextDB.Instances
join p in ContextDB.Points on i.InstanceID equals p.InstanceID
where categoryIDs.Contains(j.CategoryID)
group p by p.InstanceID into latestPoint
select new latestPoint.OrderBy(i => i.Instance.Title).FirstOrDefault();
Mais ce qui est manifestement faux. Bien que je pense que je comprends correctement group
je ne pense pas que je comprends correctement into
.
[EDIT] Pour éviter toute confusion, je pense que cette question peut être résumée comme "Comment faire des lignes d'une table avec la dernière rangée 1 pour chacun d'une autre table?"
Vous devez effacer votre montage .. je pense qu'il y a une faute de frappe. – Nix
Il existe de meilleurs moyens de le faire, et cela commencerait par avoir des associations/relations dans votre modèle d'entité. Existe-t-il des associations entre Instances/CategoryInstances/Points dans votre modèle? – Nix
Oui, CategoryInstances -> Instances sur InstanceID (dans les deux cas), Instances -> Point sur InstanceID (dans les deux cas). Il existe des références de table dans le schéma. Je vais supprimer la ligne impliquant CategoryInstances de l'échantillon car cela entraînerait une confusion. –