J'ai une méthode de type IQueryable<T>
et voici c'est la mise en œuvre:En utilisant IQueryable <T> avec LINQ joindre des tables
public IQueryable<T> Get()
{
return db.Set<T>();
}
Je dois écrire requête LINQ où je veux joindre deux tables (joindre à gauche). Ce sont les utilisateurs de la table Identtiy et ma table personnalisée PersonalInformation qui étendent les champs d'enregistrement de l'utilisateur et maintenant je veux appeler cette méthode dans ma requête LINQ et c'est bien. Voici mon Linq:
IRepository<PersonalInformation> personRepository;
IRepository<ApplicationUser> usersRepository;
var query = personRepository.Get();
var test = usersRepository.Get()
.GroupJoin(query,
n => n.Id,
m => m.UserId,
(n, ms) => new { n, ms = ms.DefaultIfEmpty() })
.SelectMany(z => z.ms.Select(m => new PersonalInfoModel
{
Name = m.Name,
LastName = m.LastName,
Email = z.n.Email
}));
Mais j'ai une erreur dans var test = usersRepository.Get()
-System.NotSupportedException
. Donc, la méthode Get de personRepository s'appelle bonne mais la méthode usersRepository retourne null. Où j'ai fait l'erreur ?? Merci
est 'GET' un membre de' IRepository'? – NetMage
@NetMage yes c'est l'interface IRepository: IDisposable où T: classe et il y a IQueryable Get(); J'ai une erreur de contexte différente dans linq –
Il est donc possible que le type réel de 'usersRepository' n'implémente pas l'opération' Get' de 'IRepository'. Bien que je n'aime pas ça, certaines classes implémentent partiellement des interfaces. Quel est le vrai type de 'personRepository' et' usersRepository'? – NetMage