Maison > développement back-end > C++ > Comment retourner les types anonymes de LINQ aux requêtes SQL?

Comment retourner les types anonymes de LINQ aux requêtes SQL?

Linda Hamilton
Libérer: 2025-01-28 00:16:09
original
835 Les gens l'ont consulté

How to Return Anonymous Types from LINQ to SQL Queries?

Méthode pour renvoyer un type anonyme dans une requête LINQ to SQL

Le retour de types anonymes peut présenter des défis lorsque vous travaillez avec plusieurs tables à l'aide de LINQ to SQL. Prenons l'exemple suivant :

Méthode originale :

1

2

3

4

5

6

7

8

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;

}

Copier après la connexion

Cette méthode récupère avec succès toutes les informations sur le chien. Cependant, si on essaie de récupérer le chien et son nom de race en utilisant un type anonyme :

1

2

3

4

5

6

7

8

9

10

11

12

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;

}

Copier après la connexion

Nous obtenons une erreur car le compilateur s'attend à ce qu'un type Dog soit renvoyé, pas un type anonyme.

Alternative : Classe personnalisée

Une solution consiste à créer une classe personnalisée comme DogWithBreed :

1

2

3

4

5

public class DogWithBreed

{

    public Dog Dog { get; set; }

    public string BreedName { get; set; }

}

Copier après la connexion

Ensuite vous pouvez modifier le code comme suit :

1

2

3

4

5

6

7

8

9

10

11

12

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;

}

Copier après la connexion

Cette approche fournit une solution de type sécurisé et réutilisable, même si elle nécessite un effort de codage supplémentaire. Le choix d'une classe personnalisée peut éviter les problèmes d'incompatibilité de types causés par les types anonymes et améliorer la maintenabilité et la lisibilité du code.

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!

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