LINQ - type d'arguments ne peut être déduit à partir de l'utilisation dans un select
J'ai le texte suivant où objectiveData est: IEnumerable<Objective>
public IList<Objective> createObjectives()
{
var objectiveData = GetContent.GetType5();
var objectives = objectiveData.Select(o => {
var result = new Objective {
Name = o.Name,
Text = o.Text
};
if (o.Name != null && o.Name.EndsWith("01"))
{
result.ObjectiveDetails.Add
(
new ObjectiveDetail
{
Text = o.Text
}
);
}
});
return objectives.ToList();
}
J'obtiens une erreur sur la ligne avec le "select" en disant:
The type arguments for method 'System.Linq.Enumerable.Select<TSource,TResult>
(System.Collections.Generic.IEnumerable<TSource>, System.Func<TSource,int,TResult>)'
cannot be inferred from the usage. Try specifying the type arguments explicitly.
Voici mon Objectif de la classe:
public partial class Objective : AuditableTable
{
public Objective()
{
this.ObjectiveDetails = new List<ObjectiveDetail>();
}
public int ObjectiveId { get; set; }
public string Name { get; set; }
public string Text { get; set; }
public virtual ICollection<ObjectiveDetail> ObjectiveDetails { get; set; }
}
Ce n'
Lisez la question de la haut...
OK, le problème est que vous sélectionnez ne rien retourner.
GetContent.GetType5()
retour?Lisez la question de la haut...
OK, le problème est que vous sélectionnez ne rien retourner.
OriginalL'auteur | 2013-08-05
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin
à la fin de votre expression.
OriginalL'auteur Plymouth223
OriginalL'auteur King King
Tout d'abord, LINQ et les effets secondaires sont... bien, le mal. En raison de chargement paresseux, et de nombreuses autres questions. Cependant, ce que vous avez besoin est d'ajouter un
return result;
ligne, puis à la fin de votre code comme suit:Toutefois, pour que cela à avoir un comportement plus régulier, je voudrais faire comme ceci:
Le premier a son origine, mais la seconde est de savoir comment il devrait être fait.
Le second n'est pas déclaré "résultat" mais il utilise. c'est à dire le deuxième bloc ne serait pas de compiler et de son comportement est très différent de la posté code.
Le deuxième bloc la compilation (si elle s'exécute en EF est une toute autre idée que ce soit) et c'est pratique que la première, car les effets secondaires et LINQ ne se mélangent pas.
OriginalL'auteur It'sNotALie.