J'ai ce qui suit où l'objectivation est: Je reçois une erreur sur la ligne avec "SELECT" Dire: P> iEnumerable 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; }
}
3 Réponses :
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
}
);
}
//you miss this
return result;
});
Vous avez besoin de à la fin de votre expression. p> p>
Tout d'abord, Linq et effets secondaires sont ... bien, mauvais. En raison de la chargement paresseux, et de nombreux autres problèmes. Cependant, ce dont vous avez besoin est d'ajouter un résultat de retour Cependant, car cela se comporte de manière plus régulière manière, je le ferais comme ceci: p> ; code> ligne à la fin de votre code, comme:
C'est assez différent du code d'origine ... où est le résultat déclaré dans votre solution proposée?
@ Plymouth223 Le premier a son original, mais le second est comment il devrait être fait B>.
Le second ne déclare pas «résultat» mais l'utilise. I.e. Le deuxième bloc ne compilerait pas et son comportement est très différent du code posté à l'origine.
@ Plymouth223 Le deuxième bloc b> sera compilé (si il est exécuté dans EF est une idée complètement différente) et c'est une meilleure pratique b> que la première, comme des effets secondaires et de linq don 't mélanger.
Qu'est-ce que
getcontent.gettype5 () code> retour?@ Lassev.karlsen a lu la question du sommet ...
Sur, le problème est que votre sélection ne renvoie rien.