D'abord, je vais répondre à votre question .. puis adressez votre réponse aux commentaires. Pour répondre à votre question, Linq vous procédez comme suit:
from p in Product
join c in Catalog on c.Id equals p.CatalogId
join m in Manufacturer on m.Id equals p.ManufacturerId
where p.Active == 1
select new { Name = p.Name, CatalogId = p.CatalogId, ManufacturerId = p.ManufacturerId, CatalogName = c.Name, ManufacturerName = m.Name };
Cela vous donnera un objet anonyme avec les éléments que vous avez demandé. Si vous avez besoin de l'utiliser ailleurs (et que vous n'utilisez pas d'objets dynamiques), je vous suggère de créer un modèle de vue et d'instancier l'un de ceux-ci dans votre sélection.
Exemple:
public class ProductInfoView
{
public string Name { get; set; }
public int CatalogId { get; set; }
public int ManufacturerId { get; set; }
public string CatalogName { get; set; }
public string ManufacturerName { get; set; }
}
from p in Product
join c in Catalog on c.Id equals p.CatalogId
join m in Manufacturer on m.Id equals p.ManufacturerId
where p.Active == 1
select new ProductInfoView() { Name = p.Name, CatalogId = p.CatalogId, ManufacturerId = p.ManufacturerId, CatalogName = c.Name, ManufacturerName = m.Name };
Cela fera référence à votre requête entraîne un peu moins douloureux.
Pour répondre à votre commentaire, vous faites beaucoup de jointures si tout ce que vous voulez est le produit. Vos critères s'assurera seulement trois choses
- Votre drapeau actif de produit est 1
- Votre produit a une entrée de catalogue existant
- Votre produit a une entrée du fabricant existant
Si # 2 et # 3 sont superflus et vous n'avez pas nécessairement besoin des noms, vous pouvez simplement faire:
from p in Product
where p.Active == 1
select p
Si le produit est un modèle CRUD, vous pouvez éventuellement le charger en profondeur pour inclure des informations sur le fabricant/le catalogue ou utiliser le modèle de vue susmentionné.
Bonne chance!
Qu'est-il arrivé à rejoindre? http://www.dotnetperls.com/join – TigOldBitties
@TigOldBitties J'ai récemment modifié ma question. Je veux obtenir l'article de produit. –
La question s'applique toujours, peu importe ce que vous essayez d'obtenir. – TigOldBitties