Ne peut pas convertir l'expression type "lambda expression" pour le type de retour Système.Linq.Les Expressions.L'Expression<Système.Func<IProduct,string,bool>>"
Ok, je suis perdu. Pourquoi est la 1ère fonction MAL (squiglies dans l'expression lambda), mais le 2ème est à DROITE (sens il compile)?
public static Expression<Func<IProduct, string, bool>> IsValidExpression(string val)
{
return (h => h.product_name == val);
}
public static Expression<Func<IProduct, bool>> IsValidExpression2()
{
return (m => m.product_name == "ACE");
}
OriginalL'auteur Robert4Real | 2010-01-11
Vous devez vous connecter pour publier un commentaire.
Votre première fonction va avoir besoin de deux arguments.
Func<x,y,z>
définit deux paramètres et la valeur de retour. Puisque vous avez à la fois unIProduct
et unstring
en tant que paramètres, vous aurez besoin de deux arguments dans votre lambda.Votre deuxième fonction est uniquement
Func<x,y>
, cela signifie donc que la signature de la fonction n'a qu'un seul paramètre, et ainsi votre lambda déclaration compile.OriginalL'auteur womp
Quel est le moyen
string
destiné à faire? Vous pouvez le faire compiler par:Ou peut-être vous voulez dire:
?
OriginalL'auteur Marc Gravell
Func<IProduct, string, bool>
est délégué à une méthode ayant la signature suivante:donc
a une différance entre le type de retour et le renvoi de la valeur. vous essayez de renvoyer un objet de type
Expression<Func<IProduct, bool>>
.le val argument n'est pas un argument à la méthode, vous êtes en déléguant à mais sera hissé (fait partie d'une classe, la mise en œuvre de la fonction obtenue) et depuis il n'est pas un argument à la méthode, il ne devrait pas être partie de la
Func
type delclarationExpression
(pas un délégué), elle n'est pas tout à fait comme vous le décrivez - il y a pas de "résultant de la fonction"; il est l'expression de l'arbre...Vous êtes à droite sur l'Expression<> le fait d'être une Expression de l'arbre et non pas une méthode que j'ai strungled pour un terme pour "La méthode que l'Expression de l'arbre peuvent être compilés dans" ce que j'ai essayé de formuler comme "résultant de la fonction" toutefois, la déclaration que bien Func<> est un type de délégué est correct 🙂
OriginalL'auteur Rune FS
L'absence de ces références peuvent causer la même erreur ("Impossible de convertir l'expression lambda de type 'System.Linq.Les Expressions.Expression Lambda "parce qu'il n'est pas un délégué de type").
OriginalL'auteur Murat Yıldız