Frage

Also ich bin neu so Linq gewarnt werden, was ich tue völlig dumm sein!

Ich habe eine Tabelle mit Casestudies und eine Tabelle von Dienstleistungen bekam mit vielen zu vielen relasionship

Die Fallstudien bereits existieren und ich versuche, einen Dienst einzusetzen, während einiger Fallstudien Verknüpfung, die ihn bereits existieren. Ich war so etwas wie dies die Annahme funktionieren würde?

 Service service = new Service()
        {
            CreateDate = DateTime.Now,
            CreatedBy = (from u in db.Users
                         where u.Id == userId
                         select u).Take(1).First(),
            Description = description,
            Title = title,
            CaseStudies = (from c in db.CaseStudies
                           where c.Name == caseStudy
                           select c),
            Icon = iconFile,
            FeatureImageGroupId = imgGroupId,
            UpdateDate = DateTime.Now,
            UpdatedBy = (from u in db.Users
                         where u.Id == userId
                         select u).Take(1).First()

        };

Das ist aber nicht richtig, da es über beschwert

Kann Typ 'System.Linq.IQueryable' auf 'System.Data.Objects.DataClasses.EntityCollection' nicht implizit konvertieren

Kann jemand bitte zeigen Sie mir den richtigen Weg.

Vielen Dank im Voraus

War es hilfreich?

Lösung

Yo hat das Abfrageergebnis hinzufügen, um die Fallsammlung anstatt zu versuchen, es studiert zu ersetzen.

var service = new Service { ... };                     

foreach (var caseStudy in db.CaseStudies.Where(s => s.Name == caseStudyName)
{
    service.CaseStudies.Add(caseStudy);
}

Sie können in einer Erweiterungsmethode wickeln diese und eine nette Syntax erhalten.

public static class ExtensionMethods
{
    public static void AddRange<T>(this EntityCollection<T> entityCollection,
                                        IEnumerable<T> entities)
    {
        // Add sanity checks here.
        foreach (T entity in entities)
        {
            entityCollection.Add(entity);
        }
    }
}

Und Sie jetzt die folgende erhalten.

var service = new Service { ... };                     

service.CaseStudies.AddRange(db.CaseStudies.Where(s => s.Name == caseStudyName));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top