J'ai deux tables A & B. Je peux tirer des requêtes Linq et obtenir des données requises pour des tables individuelles.
Comme je sais ce que chacune des tables reviendra comme indiqué dans l'exemple.
Mais lorsque je rejointe les deux tables, je ne suis pas au courant du type de retour de la requête LINQ. Ce problème peut être résolu en créant une classe qui déterrera des propriétés d'identification, de nom et d'adresse à l'intérieur. mais, chaque fois avant d'écrire une requête de jointure en fonction du type de retour, je devrai créer une classe qui n'est pas une manière convaincante
Y a-t-il d'autres Mathod disponibles pour atteindre ce
4 Réponses :
Vous avez créé une classe anonyme - vous ne pouvez pas vraiment le retourner. Une solution simple consiste à ajouter une classe pour représenter votre type.
Par exemple: P>
private IList<UserWithAddress> GetJoinAAndB()
{
var query = from a in objA
join b in objB
on a.ID equals b.AID
select new UserWithAddress(a.ID, a.Name, b.Address);
return query.ToList();
}
Comme vous avez créé un type anonyme ( anonyme des types anonymes générés par le compilateur, nous ne pouvons donc pas connaître le nom de type dans notre classe de code forte>) afin que vous ne puissiez pas le retourner. Créer une classe distincte avec Trois propriétés ID, nom et adresse ont ensuite renvoyé.
Comme Kobi a dit. P>
Si vous ne souhaitez pas créer de classe spécifiquement pour ce cas, vous pouvez utiliser un tuple code>. Seulement supporté .NET 4 cependant. P>
La valeur que vous générez est appelée type anonyme et vous pouvez le renvoyer à moins de revenir Il y a deux bonnes solutions: alors vous pouvez l'utiliser plus tard. Vous pouvez rechercher Internet sur l'avantage d'utiliser le mot-clé code> dynamique. P> p> objet code> comme:
1. est de générer une classe pour correspondre à la sortie et de le générer comme une solution kobi
2. Si vous utilisez .NET 4, vous pouvez renvoyer un type dynamique code> comme p>
dynamique code> est destiné à être utilisé avec des objets COM, pas comme le remplacement de la conception appropriée. Il rendra le développement très difficile - vous perdez Intellisense et toutes les erreurs de compilation se transformeront en erreurs d'exécution b>. objet code> est seulement un peu mieux, car vous êtes limité à des erreurs d'exécution de la coulée non valide. À tout le moins, testez beaucoup.
Oui, je sais que vous avez totalement raison mais parfois même si je suis contre cela, vous devez utiliser pour satisfaire votre besoin.
Stackoverflow.com/questions/534690/... < / a>