Maison > développement back-end > C++ > Comment renvoyer des données jointes de Linq vers SQL sans erreurs de compilation ?

Comment renvoyer des données jointes de Linq vers SQL sans erreurs de compilation ?

Barbara Streisand
Libérer: 2025-01-28 00:31:10
original
953 Les gens l'ont consulté

How to Return Joined Data from Linq to SQL Without Compilation Errors?

Retour au type anonyme Résultat de LINQ à SQL

Lorsque vous utilisez LINQ à SQL pour interroger plusieurs tables, le rendement des résultats de type anonyme peut susciter des défis. Compte tenu d'une scène, vous avez une table de chiens (y compris le nom, l'âge et la racedid) et les tables de reproduction (y compris le nom de BreedId et le nom de race). Il est simple de récupérer tous les chiens:

<code class="language-csharp">public IQueryable<Dog> GetDogs()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
                 join b in db.Breeds on d.BreedId equals b.BreedId
                 select d;
    return result;
}</code>
Copier après la connexion
Cependant, essayer d'utiliser un type anonyme pour retourner un chien avec le nom de race correspondant provoquera des erreurs de compilation:

<code class="language-csharp">public IQueryable<Dog> GetDogsWithBreedNames()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
                 join b in db.Breeds on d.BreedId equals b.BreedId
                 select new
                        {
                            Name = d.Name,
                            BreedName = b.BreedName
                        };
    return result;
}</code>
Copier après la connexion
En effet, Linq to SQL prévoit de renvoyer le type de chien, mais la requête génère un type anonyme.

Utilisez la classe personnalisée

Afin de surmonter ce problème, une solution consiste à créer une classe personnalisée pour représenter le résultat requis:

<code class="language-csharp">public class DogWithBreed
{
    public Dog Dog { get; set; }
    public string BreedName { get; set; }
}

public IQueryable<DogWithBreed> GetDogsWithBreedNames()
{
    var db = new DogDataContext(ConnectString);
    var result = from d in db.Dogs
                 join b in db.Breeds on d.BreedId equals b.BreedId
                 select new DogWithBreed()
                        {
                            Dog = d,
                            BreedName = b.BreedName
                        };
    return result;
}</code>
Copier après la connexion
Cette méthode crée une classe de chien avec des propriétés du chien et du nom de race. Ensuite, interrogez l'exemple de cette classe personnalisée, qui peut être utilisée pour accéder aux données requises.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal