0

J'utilise ASP.NET MVC framework et j'accède aux enregistrements DB avec Entities. Je fais des jointures comme ceci:Retrait de plusieurs objets de modèle à partir de LINQ Joint

public IQueryable<...> GetThem() 
{ 
    var ords = from o in db.Orders 
       join c in db.Categories on o.CategoryID equals c.ID 
       select new {Order=o, Category=c}; 

    return ords; 
} 

-je utiliser/pass « ords » d'une fonction à l'autre d'une manière fortement typée. (Je vais faire ce genre de jointures à plusieurs endroits.)

Quelle est la meilleure façon de faire cela? Ai-je besoin de créer une nouvelle classe contenant les deux vals retournés pour chaque jointure que je fais? Par exemple: public class OrderAndCategory {public Order; catégorie publique; } dans ce cas.

Y a-t-il un moyen plus simple?

Merci!

Répondre

0

La classe représentant les données dans ords est fortement typée, elle est générée par le compilateur. Vous pourriez rencontrer des problèmes si le compilateur génère des classes différentes pour différentes instances de la requête, mais avec les mêmes types. Vous devriez vérifier cela. Si c'est le cas, vous devrez créer des classes pour chaque requête différente, ou utiliser la classe Tuple<Targs...> à la place.