je le dictionnaire suivant déclaré:Lambda « ne peut pas être déduite de l'utilisation »
private readonly Dictionary<int, Image> dictionary;
et moi avons une méthode, ce qui provoque une erreur de compilation:
public IQueryable<Image> Find(Func<Image, bool> exp)
{
return dictionary.Single(exp);
}
L'erreur que je reçois est:
Error 1 The type arguments for method 'System.Linq.Enumerable.Single<TSource>(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,bool>)' cannot be inferred from the usage. Try specifying the type arguments explicitly. C:\work\MSD-AIDS-Images\MSD-AIDS-Images-Test\TestImageRepository.cs 34 30 MSD-AIDS-Images-Test
J'ai essayé googler autour, je ne peux pas trouver quoi que ce soit semble définitive quant à ce que je fais mal
Modifier - C'est lundi matin au travail.
je voulais mettre "où", pas simple
Edit 2!
Ok, le code est maintenant ceci:
public IQueryable<Image> Find(Func<Image, bool> exp)
{
return dictionary.Values.Where(exp);
}
Maintenant, j'obtiens l'erreur suivante:
Error 1 Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<MSD_AIDS_Images_Data.Image>' to 'System.Linq.IQueryable<MSD_AIDS_Images_Data.Image>'. An explicit conversion exists (are you missing a cast?) C:\work\MSD-AIDS-Images\MSD-AIDS-Images-Test\TestImageRepository.cs 34 20 MSD-AIDS-Images-Test
En tant Pour votre information, la méthode, il est pour la mise en œuvre d'une interface, la déclaration de c'est-à-dire:
IQueryable<T> Find(Func<T, bool> exp);
Cela a été plus compliqué qu'il ne devrait l'être!
Comme je l'ai déjà dit - changer le type de retour à IEnumerable –