Maison >développement back-end >C++ >Les requêtes LINQ to SQL peuvent-elles renvoyer des types anonymes comme résultats ?

Les requêtes LINQ to SQL peuvent-elles renvoyer des types anonymes comme résultats ?

Susan Sarandon
Susan Sarandonoriginal
2025-01-28 00:26:09742parcourir

Can LINQ to SQL Queries Return Anonymous Types as Results?

LINQ to SQL peut-il renvoyer des types anonymes comme résultats ?

Dans LINQ to SQL, comment interroger plusieurs tables et combiner les résultats avec des types anonymes ?

Tentative initiale utilisant des types anonymes

L'exemple suivant, utilisant deux tables Dogs et Breeds, tente de récupérer tous les chiens et leurs BreedName correspondants en utilisant un type anonyme :

<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;
}</dog></code>

Cependant, cela échoue car le compilateur s'attend à ce que Dogs soit renvoyé, et non un type anonyme.

Type personnalisé

Une solution consiste à créer un type personnalisé pour représenter le chien avec le nom de la race :

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

Utiliser le type personnalisé

Grâce à ce type personnalisé, les requêtes peuvent être modifiées pour renvoyer les résultats souhaités :

<code class="language-csharp">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;
}</dogwithbreed></code>

Cette approche fournit un moyen sûr et réutilisable de combiner les résultats de plusieurs tables à l'aide de types personnalisés. Cela évite les problèmes d’incompatibilité de types rencontrés lors de l’utilisation de types anonymes.

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:
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