J'essaie de faire une requête LINQ à une liste d'objets RelatedProducts. Je dois les regrouper par CategoryId, donc j'utilise la clause group by. Malheureusement, je viens de réaliser que je ne peux pas simplement utiliser 'select g.Value' à la fin. Le groupe est une IGrouping et je veux retourner juste le RelatedProduct ici. Comment puis-je faire ceci?comment faire un regroupement dans LINQ
Dans mon cas également, un produit peut appartenir à deux catégories à la fois. Comment puis-je empêcher LINQ de retourner des doublons? Je ne suis intéressé que par la première catégorie (en fait, peu importe si elle est assignée à ce produit).
var query = from rp in context.RelatedProducts
join p in context.Products on rp.ProductId2 equals p.ProductId
join pc in context.ProductCategories on p.ProductId equals pc.ProductId
where rp.ProductId1 == productId1 &&
!p.Deleted &&
(showHidden || p.Published)
orderby rp.DisplayOrder
group rp by pc.CategoryId into g
select g;
Si vous ne souhaitez dans la première catégorie, alors pourquoi ne pas simplement ajouter où pc.CategoryId == interestingcategory au lieu de regroupement, puis en rejetant tous les groupes sauf la première? –
quand j'ai dit qu'il y a plus de catégories, je veux dire qu'il y a une relation plusieurs-à-plusieurs entre les produits et les catégories. C'est ainsi que la base de données sur laquelle je travaille est structurée. En fait, je n'utilise qu'une catégorie par produit. –