Home >Backend Development >C++ >Can LINQ to SQL Queries Return Anonymous Types as Results?
Can LINQ to SQL return anonymous types as results?
In LINQ to SQL, how to query multiple tables and combine the results with anonymous types?
Initial attempt using anonymous types
The following example, using two tables Dogs
and Breeds
, attempts to retrieve all dogs and their corresponding BreedName
using an anonymous type:
<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>
However, this fails because the compiler expects Dogs
to be returned, not an anonymous type.
Custom type
One solution is to create a custom type to represent the dog with the breed name:
<code class="language-csharp">public class DogWithBreed { public Dog Dog { get; set; } public string BreedName { get; set; } }</code>
Use custom type
Using this custom type, queries can be modified to return the desired results:
<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>
This approach provides a type-safe and reusable way to combine results from multiple tables using custom types. This avoids the type mismatch problems encountered when using anonymous types.
The above is the detailed content of Can LINQ to SQL Queries Return Anonymous Types as Results?. For more information, please follow other related articles on the PHP Chinese website!