10
votes

Les arguments de type LINQ ne peuvent pas être déduits de l'utilisation dans une sélection

J'ai ce qui suit où l'objectivation est: iEnumerable code> xxx pré>

Je reçois une erreur sur la ligne avec "SELECT" Dire: P>

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 commentaires

Qu'est-ce que getcontent.gettype5 () retour?


@ Lassev.karlsen a lu la question du sommet ...


Sur, le problème est que votre sélection ne renvoie rien.


3 Réponses :


2
votes
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;
    });

0 commentaires

16
votes

Vous avez besoin de xxx

à la fin de votre expression.


0 commentaires

0
votes

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 ; ligne à la fin de votre code, comme: xxx

Cependant, car cela se comporte de manière plus régulière manière, je le ferais comme ceci: xxx


4 commentaires

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 .


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 sera compilé (si il est exécuté dans EF est une idée complètement différente) et c'est une meilleure pratique que la première, comme des effets secondaires et de linq don 't mélanger.