2009-07-24 4 views

Répondre

1

Dans votre exemple, si vous avez utilisé le concepteur pour créer votre Linq au contexte de données SQL, et il y a une relation de clé étrangère entre les tables Produit et Catégorie de votre base de données, la Catégorie sera une propriété de votre classe Produit, il n'est donc pas nécessaire de les joindre.

Quelque chose le long des lignes de ce qui suit devrait aider (deviner les noms de propriétés, db est votre contexte de données):

public IQueryable<Product> GetItems(int categoryID) 
{ 
    return db.Products.Where(p => p.Category.CategoryID == categoryID).AsQueryable(); 
} 

Ou si vous n'êtes pas à l'aise avec la syntaxe lambda, le suivant est synonyme:

public IQueryable<Product> GetItems(int categoryID) 
{ 
    var result = from p in db.Products 
     where p.Category.CategoryID == categoryId 
     select p; 
    return result.AsQueryable(); 
} 

La classe Product possède une propriété Category, fournissant un accès fortement typé à toutes les propriétés de la catégorie. Vous utiliseriez quelque chose comme product.Category.Name pour obtenir le nom de la catégorie par exemple.

De plus, il existe une multitude de bons tutoriels Linq to SQL. Effectuez les opérations suivantes:

http://it-box.blogturk.net/2007/10/19/linq-to-sql-tutorial-series-by-scott-guthrie-pdf-book-format/

http://www.hookedonlinq.com/LINQtoSQL5MinuteOverview.ashx

+0

Salut, merci pour votre réponse. Je cherche à retourner plus d'une colonne de la jointure, pas seulement l'id. Je ne suis pas tellement embourbé dans la requête, je veux juste savoir si je ramène des colonnes supplémentaires (multiples), seront-elles encore fortement typées? – Dkong

+0

OK, donc si vous avez un ensemble de produits, et que votre classe de produit a une propriété Catégorie, vous aurez un accès fortement typé à toutes les propriétés de la catégorie. Vous utiliseriez quelque chose comme product.Category.Name pour obtenir le nom de la catégorie par exemple. Est-ce ce que vous êtes après? –

+0

Merci. Cela répond à ma question. Je ne savais pas si le fait de renvoyer un 'produit' signifiait que les propriétés non-produit résultant de la jointure auraient un accès fortement typé. – Dkong

Questions connexes